常用语网页客户端对密码加密,在后端java解密还原
java代码依赖
commons-codec
commons-codec
1.4
compile
org.bouncycastle
bcprov-jdk15on
1.52
js代码依赖 jsencrypt.js
js代码:
//java后台生成的
var publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTu5u08Wel08uWM02GYYRlFXfmEHH7DAbSWufUdU8NlZrE/4BAOwqPMu/vMLdCi4GRHDSmWhoqjC5/7oKoALl6nFCAObtSl6RiWdc8KvcN1D45PASs8M/YPY+oa8iNYZA/drtgXEw4NniC0EB47miGVL4POyLOE3dJlk4LD/AjtQIDAQAB";var encrypt = newJSEncrypt();
encrypt.setPublicKey(publicKey);//加密
alert(encrypt.encrypt("hello"));
java代码:
importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.SecureRandom;importjava.security.Security;importjava.security.interfaces.RSAPrivateKey;importjava.security.interfaces.RSAPublicKey;importjavax.crypto.Cipher;importorg.apache.commons.codec.binary.Base64;public classRSAUtils {private static final KeyPair keyPair =initKey();private staticKeyPair initKey(){try{
Security.addProvider(neworg.bouncycastle.jce.provider.BouncyCastleProvider());
SecureRandom random= newSecureRandom();
KeyPairGenerator generator= KeyPairGenerator.getInstance("RSA", "BC");
generator.initialize(1024, random);returngenerator.generateKeyPair();
}catch(Exception e) {throw newRuntimeException(e);
}
}/*** 生成public key
*@return
*/
public staticString generateBase64PublicKey(){
RSAPublicKey key=(RSAPublicKey)keyPair.getPublic();return newString(Base64.encodeBase64(key.getEncoded()));
}/*** 解密
*@paramstring
*@return
*/
public staticString decryptBase64(String string) {return newString(decrypt(Base64.decodeBase64(string)));
}private static byte[] decrypt(byte[] string) {try{
Security.addProvider(neworg.bouncycastle.jce.provider.BouncyCastleProvider());
Cipher cipher= Cipher.getInstance("RSA/None/PKCS1Padding", "BC");
RSAPrivateKey pbk=(RSAPrivateKey)keyPair.getPrivate();
cipher.init(Cipher.DECRYPT_MODE, pbk);byte[] plainText =cipher.doFinal(string);returnplainText;
}catch(Exception e) {throw newRuntimeException(e);
}
}public static voidmain(String[] args) {//生成public key
System.out.println(generateBase64PublicKey());//解密
System.out.println(decryptBase64("wAfY9JkoKay9SxcPIs1FcG+t6sR+wYwAs/mh9DpfcBraxzqoZdb9LyaAigzFQ0EKck9OyHL0dhv+Uxuw5hHw6CPT0B2Z0i1gwrjDUNaL1gWvqt1pDJVGrIYPLJSjs9xktFhY1jbxQgXGjyCt06Rwid5sJknw90AUO0CyQulfipg="));
}
}