如何使用java中的一些唯一键来加密随机值

时间:2015-01-28 13:09:22

标签: java hash passwords salt

您好我想使用Java中的密钥加密唯一的随机值。我将这个独特的随机值发送到每个web服务,以使系统安全,这样任何人都无法在休息客户端上访问我的Web服务URL。

请指导我实现这一目标。

提前致谢。

1 个答案:

答案 0 :(得分:1)

该问题有两种解决方案:

总之,第一个;你通过套接字加密数据(通过逆向工程,比如暴力破解,你可以破解用于加密的密码)。第二;使用SSL(安全套接字层)。我使用过第一个解决方案,然后我可以为您详细说明如何实现。你在这里:

1-有一些API可以帮助您实现这一目标。我前一段时间使用jasypt,我建议。但也有其他人;比如bouncy castle

通常,它们很容易实现。在jasypt中,你可以解决这个问题,只需运行测试:

public class SecurityUtil {

private static String passEncrypt;

/*
 * Get the message encrypted
 * @param String string to encrypt
 * @return encrypted message
 */
public static String Encryptor(String message){
    SecurityUtil.testEncryptPassSet();
    StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
    encryptor.setPassword(SecurityUtil.passEncrypt);        
    String encryptedText = encryptor.encrypt(message);
    return encryptedText;
}
/*
 * Get the decrypt message
 * @param encrypted message
 * @return String decrypted message
 * 
 */
public static String Decryptor(String message) {
    SecurityUtil.testEncryptPassSet();
    StandardPBEStringEncryptor decryptor = new StandardPBEStringEncryptor();
    decryptor.setPassword(SecurityUtil.passEncrypt);  
    String decryptedText = decryptor.decrypt(message);
    return decryptedText;
}


/*
 * set the encryption password
*/
public static void setPassEncrypt(String passEncrypt) {
    SecurityUtil.passEncrypt = passEncrypt;
}

public static void testEncryptPassSet() {
    if (SecurityUtil.passEncrypt == null){
        System.out.println("Must set the password after");
    }
}

public static void main (String[] args){
    SecurityUtil.setPassEncrypt("Test"); //here you key
    String encrypted;
    System.out.println("Encrypted: "+(encrypted = SecurityUtil.Encryptor("This is a test message")));

    System.out.println("Decryp: "+SecurityUtil.Decryptor(encrypted));
}

}

输出:

加密:eESU3c2IzRSl2VvHs4Otyh + Q3aBisiP6XPfyKpbXMdQ =

解密:这是一条测试消息

2-您可以研究如何在套接字here上实施SSL。此外,here是一些例子。 here我们在StackOverflow中有类似主题的问题。