--SQL 内部函数(单向不可逆)
select pwdencrypt('aa')  --加密
select pwdcompare('aa',pwdencrypt('aa')) --比较,返回1相等,0则反之。
--邹建的加密函数(双向可逆)create function f_jmstr(@str varchar(8000),@pwdstr varchar(8000))
returns varchar(8000)
As
begin
declare @re varchar(8000)
declare @i int
select @i=len(@str),@re=''
while len(@pwdstr)<@i
set @pwdstr=@pwdstr+'123'+@pwdstr
while @i>0
select @re=
nchar(unicode(substring(@str,@i,1))^unicode(substring(@pwdstr,@i,1)))
+@re
,@i=@i-1
return(@re)
end
go
----------------------------------------调用举例
select dbo.f_jmstr('ework','lhtlht') --把ework用lhtlht来加密
select dbo.f_jmstr(dbo.f_jmstr('ework','lhtlht'),'lhtlht')--把 加密后的字符用lhtlht
来解密
DES java算法
/*
安全程序 DESede/DES测试
*/
import java.security.*;
import javax.crypto.*;
public class testdes {
public static void main(String[] args){
    testdes my=new testdes();
    my.run();
  }
public  void run() {
//添加新安全算法,如果用JCE就要把它添加进去
 Security.addProvider(new com.sun.crypto.provider.SunJCE());
String Algorithm="DES"; //定义 加密算法,可用 DES,DESede,Blowfish
String myinfo="要加密的信息";
   try {
   //生成密钥
   KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
   SecretKey deskey = keygen.generateKey();   //加密
   System.out.println("加密前的二进串:"+byte2hex(myinfo.getBytes()));
   System.out.println("加密前的信息:"+myinfo);
   Cipher c1 = Cipher.getInstance(Algorithm);
   c1.init(Cipher.ENCRYPT_MODE,deskey);
   byte[] cipherByte=c1.doFinal(myinfo.getBytes());
    System.out.println("加密后的二进串:"+byte2hex(cipherByte));
   //解密
   c1 = Cipher.getInstance(Algorithm);
   c1.init(Cipher.DECRYPT_MODE,deskey);
   byte[] clearByte=c1.doFinal(cipherByte);
   System.out.println("解密后的二进串:"+byte2hex(clearByte));
   System.out.println("解密后的信息:"+(new String(clearByte)));  }
   catch (java.security.NoSuchAlgorithmException e1) {e1.printStackTrace();}
   catch (javax.crypto.NoSuchPaddingException e2) {e2.printStackTrace();}
   catch (java.lang.Exception e3) {e3.printStackTrace();}
  }
 public String byte2hex(byte[] b) //二行制转字符串
    {
     String hs="";
     String stmp="";
     for (int n=0;n<b.length;n++)
      {
       stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
       if (stmp.length()==1) hs=hs+"0"+stmp;
       else hs=hs+stmp;
       if (n<b.length-1)  hs=hs+":";
      }
     return hs.toUpperCase();
    }}