文章目录 1.AES加密和解密 2.加密和解密示例 Java支持许多安全的加密算法,但其中一些算法在安全密集型应用中很脆弱。例如,数据加密标准(DES)加密算法被认为是非常……
文
章
目
录
- 1.AES加密和解密
- 2.加密和解密示例
Java支持许多安全的加密算法,但其中一些算法在安全密集型应用中很脆弱。例如,数据加密标准(DES)加密算法被认为是非常不安全的;使用DES加密的消息已经被暴力破解在一天之内被机器破解,例如电子前沿基金会的(EFF)Deep Crack。
更安全的加密算法是AES – 高级加密标准,这是一种对称加密算法。AES加密被美国用于保护敏感但未分类的材料,因此我们可以说它是足够安全的。
1.AES加密和解密
让我们来看一下这个Java程序中使用AES加密的示例。
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class AES {
private static SecretKeySpec secretKey;
private static byte[] key;
public static void setKey(final String myKey) {
MessageDigest sha = null;
try {
key = myKey.getBytes(\"UTF-8\");
sha = MessageDigest.getInstance(\"SHA-1\");
key = sha.digest(key);
key = Arrays.copyOf(key, 16);
secretKey = new SecretKeySpec(key, \"AES\");
} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public static String encrypt(final String strToEncrypt, final String secret) {
try {
setKey(secret);
Cipher cipher = Cipher.getInstance(\"AES/ECB/PKCS5Padding\");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getEncoder()
.encodeToString(cipher.doFinal(strToEncrypt.getBytes(\"UTF-8\")));
} catch (Exception e) {
System.out.println(\"Error while encrypting: \" + e.toString());
}
return null;
}
public static String decrypt(final String strToDecrypt, final String secret) {
try {
setKey(secret);
Cipher cipher = Cipher.getInstance(\"AES/ECB/PKCS5PADDING\");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return new String(cipher.doFinal(Base64.getDecoder()
.decode(strToDecrypt)));
} catch (Exception e) {
System.out.println(\"Error while decrypting: \" + e.toString());
}
return null;
}
}
2.加密和解密示例
让我们测试是否能够从加密的字符串中获取解密的字符串。
final String secretKey = \"ssshhhhhhhhhhh!!!!\";
String originalString = \"howtodoinjava.com\";
String encryptedString = AES.encrypt(originalString, secretKey) ;
String decryptedString = AES.decrypt(encryptedString, secretKey) ;
System.out.println(originalString);
System.out.println(encryptedString);
System.out.println(decryptedString);
程序输出:
howtodoinjava.com
Tg2Nn7wUZOQ6Xc+1lenkZTQ9ZDf9a2/RBRiqJBCIX6o=
howtodoinjava.com
请在下方留下您的问题和评论。
还没有评论呢,快来抢沙发~