java js rsa加密算法_JS客户端RSA加密,Java服务端解密

常用语网页客户端对密码加密,在后端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="));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值