java版和C#版,可互相加解密。
其中PasswordUtil.java和PasswordUtil.cs可互相加解密。
DesUtil.java和DesUtil.cs可互相加解密。
一、以下两种加密方法相同
方法一:
Security.addProvider(new com.sun.crypto.provider.SunJCE()); byte[] arrB = new byte[8]; // 将原始字节数组转换为8位 for (int i = 0; i < key.getBytes().length && i < arrB.length; i++) { arrB[i] = key.getBytes()[i]; } // 生成密钥 Key desKey = new javax.crypto.spec.SecretKeySpec(arrB, "DES"); Cipher encryptCipher = Cipher.getInstance("DES"); encryptCipher.init(Cipher.ENCRYPT_MODE, desKey); byte[] resultByte = encryptCipher.doFinal(message.getBytes());
二、方法二:
Cipher cipher = Cipher.getInstance("DES");
byte[] arrBTmp = key.getBytes();
byte[] arrB = new byte[8];
// 将原始字节数组转换为8位
for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) {
arrB[i] = arrBTmp[i];
}
DESKeySpec desKeySpec = new DESKeySpec(arrB);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encodeByte = cipher.doFinal(message.getBytes());