java 客户端和服务端加密_JS客户端RSA加密,Java服务端解密

java代码依赖

commons-codec

commons-codec

1.4

compile

org.bouncycastle

bcprov-jdk15on

1.52

js代码依赖jsencrypt.js

1.[文件] jsencrypt.js ~ 131KB     下载(907)

2.[代码][JavaScript]代码

// java后台生成的

var publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTu5u08Wel08uWM02GYYRlFXfmEHH7DAbSWufUdU8NlZrE/4BAOwqPMu/vMLdCi4GRHDSmWhoqjC5/7oKoALl6nFCAObtSl6RiWdc8KvcN1D45PASs8M/YPY+oa8iNYZA/drtgXEw4NniC0EB47miGVL4POyLOE3dJlk4LD/AjtQIDAQAB";

var encrypt = new JSEncrypt();

encrypt.setPublicKey(publicKey);

// 加密

alert(encrypt.encrypt("hello"));

3.[代码][Java]代码

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.SecureRandom;

import java.security.Security;

import java.security.interfaces.RSAPrivateKey;

import java.security.interfaces.RSAPublicKey;

import javax.crypto.Cipher;

import org.apache.commons.codec.binary.Base64;

public class RSAUtils {

private static final KeyPair keyPair = initKey();

private static KeyPair initKey(){

try {

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

SecureRandom random = new SecureRandom();

KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "BC");

generator.initialize(1024, random);

return generator.generateKeyPair();

}catch (Exception e) {

throw new RuntimeException(e);

}

}

/**

* 生成public key

* @return

*/

public static String generateBase64PublicKey(){

RSAPublicKey key = (RSAPublicKey)keyPair.getPublic();

return new String(Base64.encodeBase64(key.getEncoded()));

}

/**

* 解密

* @param string

* @return

*/

public static String decryptBase64(String string) {

return new String(decrypt(Base64.decodeBase64(string)));

}

private static byte[] decrypt(byte[] string) {

try {

Security.addProvider(new org.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);

return plainText;

}catch (Exception e) {

throw new RuntimeException(e);

}

}

public static void main(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、付费专栏及课程。

余额充值