RSA1024bit加减密算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/songyanfei1205/article/details/80691881
填充方式是:PKCS1_PADDING   
字符集是:gb2312


秘钥位数是: 1024bit
秘钥格式是:PKCS#8
页面使用公钥加密 加密算法是jsencrypt.min.js

页面写法如下:
        var encrypt = new JSEncrypt();  
	    encrypt.setPublicKey(publicKey);//  publicKey表示从后台生成的公钥
	    var encryptData = encrypt.encrypt(password);//加密后的字符串  password表示需要加密的文本


后台使用私钥解密 解密算法是RSAUtil.java

后台写法如下:
        /**
		*生成公钥和私钥
		*/
        public Map<String, Object> getRsaKey(HttpServletRequest request){
		Map<String, Object> rsaMap = new HashMap<String, Object>();
		try {
			//生成公钥和私钥
			Map<String, Key> map = RSACoder.initKey();
			RSAPublicKey publicKey = (RSAPublicKey) map.get(RSACoder.PUBLIC_KEY);
			RSAPrivateKey privateKey = (RSAPrivateKey) map.get(RSACoder.PRIVATE_KEY);
			
			//模  16进制
			String modulus16 = publicKey.getModulus().toString(16);
			//公钥指数
			String publicExponent16 = publicKey.getPublicExponent().toString(16);
			//把公钥传递给前台
			rsaMap.put("publicKey", RSACoder.encryptBASE64(publicKey.getEncoded()));
			System.err.println("modulus:"+modulus16);
			System.err.println("publicExponent:"+publicExponent16);
			//把私钥存放在session中  用完清空session的值privateKey
			RSAUtils.privateKey.put(request.getSession().getId(), privateKey);
			System.err.println("公钥"+RSACoder.encryptBASE64(publicKey.getEncoded()));
			System.err.println("私钥"+RSACoder.encryptBASE64(privateKey.getEncoded()));
		} catch (Exception e) {
			e.printStackTrace();
		}
	
		return rsaMap;
	}
	/**
	*解密
	*/
	public String decrypPassword(String password){
	   return new String(RSAUtil.decryptByPrivateKey(password, RSAUtils.privateKey.get(request.getSession().getId())));
	}	
验证加密解密的正确性:
  1、打开网址:http://tool.chacuo.net/cryptrsapubkey
  2、把程序生成的公钥和私钥拷贝出来
  3、将生成的公钥和私钥都以64个字符一行换行整理出来;例如:
     MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/oPDBI4GcvfIoN1ld/1nhvAe4
     y66rAvm7BjkMGPC+iTyVJa4+zyxf1s+Su5hXBS5zQ2PKaUZGE7+EpEO/TEPRLJhg
     th3N8DuIiw/6QRAzMSQV2VlmmihambMb0rLDTonnXjvEPsvdySLR3inRwZAdq6Fo
     3tLdYbk3SwnhIOQl3QIDAQAB
  4、点击网页上链接 'rsa公钥加密解密' ,把生成的公钥粘贴到文本框
      注意:粘贴在-----BEGIN PUBLIC KEY-----和-----END PUBLIC KEY-----中间
  5、输入要加密的文本
  6、点击RSA公钥加密按钮,即可生成密文。如:
     TZIFxU/vzOEPKw5L8fUh/dEYkzpgDJ5gVi0psfF5z7I1WaHWocB5JSz/tKqNNgcj6/CTf3U6Rtyhqxrzi/RBKuZ5P8qVlDvJTeaoTEgJtO5iQKKwQnIiqtPLDH2e3YluF+uSyqq/oD47z6oegnuIhawZd8/dSAn76j2j8w9w8lRLVowCO6iOlUOXgEBz5SgKyfWlXVP4vBKw0v+T9ALoAJtfZ2K4EY8bx84/Iu6xjsqrSrz1HmI4GiPrIba6OHyyzwNq4WBLrEBQI5laERw2jQIempVcLTGsE8d3hdm2xILHE2s5MENOKz0SzedTqV3iSyxcSF/WrLD28uz6N67afw==
  7、同理,点击网页上链接 'rsa私钥加密解密' ,把生成的私钥粘贴到输入加密私钥的文本框中
      注意:粘贴在-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----中间
  8、将上面的密文粘贴粘贴到 待加密、解密的文本框中
  9、点击RSA私钥解密按钮,即可生成看到解密出来的明文。
  10、注意第3步,公钥和私钥是以64个字符一行。


相关js文件和java文件下载链接

https://download.csdn.net/download/songyanfei1205/1047875

猜你喜欢

转载自blog.csdn.net/songyanfei1205/article/details/80691881