看完各种文档,终于理解加密体系了。这个学习过程中,一个帮助是java官网,还有java核心技术 卷二。
公钥、私钥:
这是一对有数学关系的两个数,公钥用于公开,私钥自己保留。公钥无法推算出私钥,私钥可以推算出公钥。公钥、私钥都可以加密,加密只是使用了一个数字。
所以Java的程序实现是分为两步的,第一步生成Key值,第二部用加密算法加密。
下面是个对称加密AES算法。
public static void testCipher(){
try {
KeyGenerator generator = KeyGenerator.getInstance("AES");
SecureRandom random = new SecureRandom();
generator.init(random);
SecretKey key = generator.generateKey();
Cipher enCipher = Cipher.getInstance("AES");
enCipher.init(Cipher.ENCRYPT_MODE, key);
enCipher.update(bytes);
cipherData = enCipher.doFinal();
for (byte data : cipherData) {
System.out.print(data);
}
System.out.println("/n");
Cipher deCipher = Cipher.getInstance("AES");
deCipher.init(Cipher.DECRYPT_MODE, key);
deCipher.update(cipherData);
deCipherData = deCipher.doFinal();
for (byte data : deCipherData) {
System.out.print(data);
}
} catch (Exception e){
e.printStackTrace();
}
}