|
5精币
mport Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;
import java.io.IOException;
import java.io.PrintStream;
import java.security.Key;
import java.security.SecureRandom;
import java.security.spec.KeySpec;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
public class DES
{
private byte[] desKey;
public DES(String paramString)
{
this.desKey = paramString.getBytes();
}
public static byte[] base64Decode(String paramString)
throws IOException
{
if (paramString == null) {}
for (paramString = null;; paramString = new BASE64Decoder().decodeBuffer(paramString)) {
return paramString;
}
}
public static String base64Encode(byte[] paramArrayOfByte)
{
if (paramArrayOfByte == null) {}
for (paramArrayOfByte = null;; paramArrayOfByte = new BASE64Encoder().encode(paramArrayOfByte)) {
return paramArrayOfByte;
}
}
public static void main(String[] paramArrayOfString)
throws Exception
{
paramArrayOfString = new DES("abcdefgh");
System.out.println("Encode:" + paramArrayOfString.encrypt("a"));
System.out.println("Decode:" + paramArrayOfString.decrypt(paramArrayOfString.encrypt("a")));
}
public String decrypt(String paramString)
throws Exception
{
return new String(desDecrypt(base64Decode(paramString)));
}
public byte[] desDecrypt(byte[] paramArrayOfByte)
throws Exception
{
SecureRandom localSecureRandom = new SecureRandom();
Object localObject = new DESKeySpec(this.desKey);
SecretKey localSecretKey = SecretKeyFactory.getInstance("DES").generateSecret((KeySpec)localObject);
localObject = Cipher.getInstance("DES");
((Cipher)localObject).init(2, localSecretKey, localSecureRandom);
return ((Cipher)localObject).doFinal(paramArrayOfByte);
}
public byte[] desEncrypt(byte[] paramArrayOfByte)
throws Exception
{
SecureRandom localSecureRandom = new SecureRandom();
Object localObject = new DESKeySpec(this.desKey);
localObject = SecretKeyFactory.getInstance("DES").generateSecret((KeySpec)localObject);
Cipher localCipher = Cipher.getInstance("DES");
localCipher.init(1, (Key)localObject, localSecureRandom);
return localCipher.doFinal(paramArrayOfByte);
}
public String encrypt(String paramString)
throws Exception
{
return base64Encode(desEncrypt(paramString.getBytes()));
}
}
|
最佳答案
查看完整内容
iv=localSecureRandom 随机 8位 16位字节
key=this.desKey
DES CBC
|