应用软件安全编程--24不要使用硬编码密匙

当程序中使用硬编码加密密匙时,所有项目开发人员都可以查看该密匙,甚至如果攻击者能够获取 程序 class文件,可通过反编译得到密匙,硬编码加密密匙会大大降低系统安全性。

对于避免使用硬编码密匙的情况,示例1给出了不规范用法(Java 语言)示例。示例2给出了规范 用法(Java 语言)示例。

示例1:

private static String encryptionKey ="dfashsdsdfsdgagascv";

byte[] keyBytes = encryptionKey.getBytes();

SecretKeySpec key = new SecretKeySpec(keyBytes,"AES");

Cipher encryptCipher = Cipher.getInstance("AES");

encryptCipher.init(Cipher.ENCRYPT  MODE,key);

上述代码使用硬编码加密密钥执行 AES 加密。

程序应采用不小于8个字节的随机生成的字符串作为密匙。

示例2:

KeyGeneratorkeyGen = KeyGenerator.getInstance("AES");

keyGen.init(128,new SecureRandom(password.getBytes()));

SecretKeysecretKey = kgen.generateKey();

byte[] keyBytes = secretKey.getEncoded();

SecretKeySpec key = new SecretKeySpec(keyBytes,"AES");

Cipher encryptCipher = Cipher.getInstance("AES");

encryptCipher.init(Cipher.ENCRYPT  MODE,key);

上述代码使用 KeyGenerator 来生成密匙。

你可能感兴趣的:(应用软件安全编程,安全,服务器,前端,java)