在上一篇文章《Java使用RSA加密解密签名及校验》中,用java实现加密解密,但是在实际应用中,如前端页面用户输入的密码传输给后台服务前,需加密,也就是公钥加密,私钥解密。
首先把《Java使用RSA加密解密签名及校验》中稍加修改,把公私钥写在代码中来,如下所示:
package com.bijian.study; import org.apache.commons.codec.binary.Base64; public class MainTest { public static void main(String[] args) throws Exception { System.out.println("--------------公钥加密私钥解密过程-------------------"); String plainText="ihep_公钥加密私钥解密"; //公钥加密过程 // byte[] cipherData=RSAEncrypt.encrypt(RSAEncrypt.loadPublicKeyByStr(RSAEncrypt.loadPublicKeyByFile(filepath)), plainText.getBytes()); String pubKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3SBa9KmzRVhdysc6gzSouxaH+mGl5xhIVu8APu+O3bkY4wlinlc6O4ZDGHS0kJHY1/Kn9D1xjzpnk7pjLORPvpgZmcuYF5BJdQLtrAxILwbpy42dnRoPs7QRSiG2sKcjsnKoRSszRIr70lFOF05R9Utumay5HFOWFiQaqhHtwp3SfvT250bRo8NKB5JtCbsKQDFsWNPcV7cyq/CKXibGjeelxTdWR7XBIeBhjMTWYO8XBhzlJA8MdGvDw+Eb+TiF/74YqhoDAriUKh36iqObPKFkgZ4uOcfvoe15NxJi6+JFahtR3FwvxukYWBlTgPghOaYaI7YX3VTAvBoRzUM92wIDAQAB"; byte[] cipherData=RSAEncrypt.encrypt(RSAEncrypt.loadPublicKeyByStr(pubKey), plainText.getBytes()); String cipher=Base64.encodeBase64String(cipherData); //私钥解密过程 // byte[] res=RSAEncrypt.decrypt(RSAEncrypt.loadPrivateKeyByStr(RSAEncrypt.loadPrivateKeyByFile(filepath)), Base64.decodeBase64(cipher)); String priKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDdIFr0qbNFWF3KxzqDNKi7Fof6YaXnGEhW7wA+747duRjjCWKeVzo7hkMYdLSQkdjX8qf0PXGPOmeTumMs5E++mBmZy5gXkEl1Au2sDEgvBunLjZ2dGg+ztBFKIbawpyOycqhFKzNEivvSUU4XTlH1S26ZrLkcU5YWJBqqEe3CndJ+9PbnRtGjw0oHkm0JuwpAMWxY09xXtzKr8IpeJsaN56XFN1ZHtcEh4GGMxNZg7xcGHOUkDwx0a8PD4Rv5OIX/vhiqGgMCuJQqHfqKo5s8oWSBni45x++h7Xk3EmLr4kVqG1HcXC/G6RhYGVOA+CE5phojthfdVMC8GhHNQz3bAgMBAAECggEBAL+zfSb+t9w2b5mMfr2guWb4cYovfZSLCKvVJ3FoXYL7JQgu6sA6/tD75M8e3is3RbZxOAoV+o0hJQp9W91fUYL6ebdLOd+zxvsaPtIZE7sxUx6U9z9riJFSWmraL3eWbuwVWqwcd6XEl+wNcJXj4Em3y3qOsyxLiqJHSpaGVImSi8xgIgNpnij9lbR2ljnv/4SWWyx8Uz4837MhClWDdAbsA5demnBNbMzw2vgvBOF6PrMxCZnw+aL7t8g3HeSS6jSUXTYxPL10yNTHX4Bt7LAY6lDfpZQ4IrH+BWRobpbLeeyjM2zkzaNXtTSKq/W/+4lGfxNQfOIUTQCd++erdIECgYEA/OiZgB4E1SE9Ekh+lXWsTkOU3Tb4NJlTwuV4RufoOBLexLbclz82j+4C6E3NUuaacSo9KLaYknUATzrKGDHN3icJIcG4575vzsvSzOn/cJk0o/Jc4uVX2cEoPxaXIkMN+21j9KqxYLQ3xGY5wFXR/6CMku2YuyyFu97gHRSglSUCgYEA39RNjrRxWA4vtnm9yamDVlDcbxxF663g9W88E+xp6cZe+2032Golhbhhp8bjV0hyWWFj5VObJ8tqwgRfcKhpy8luBHxR4b4vgqPKL4nxm1Phtg/lIZIowUSdeIxE9BnTId4Ekx5hqOZCe8G3WFba7uAZ/sS3Ils6zR1Wzv3Plv8CgYEA84b+GBHP0XJaHjrUORLAQfRtab2+rtddgnP3pz8zqprxCzaRnsntvhYPkqUoKsWGvaVQkt2QeKZVD/WqGDYM5/dqoaiqZexIOTam204O+9tqhtufeZQhTbrjCCy2hvVOh2ZEM5oRhu7CLEnLHlsFBUMRWYGT6dfrRoZMA3STVEkCgYEAw6SKdiX6vIEJ63HWFiL5DcV4KBaKd0pwy5cC6FdI7HHcK+B3Y87EJXHYyhHqPSyx5rZd3uGJSOtg0V2JHqvWba4PYBRabfsTBBmubIcijCZxr/WMzh83SFd1XR0eWE8KYRvy27U+n6dEjW/xlmG00/9GOY4wlPMxHoB6lEr93HkCgYBovoZekXRiiYjVXfDDxh5RgKXXbpESuW+5M/NoRje07uj9KwXiCagvyr71Ahx0m626ysRATSDKJ9xR6y28hmuD0e8ju29jtsR/r66vetfb5KdpmQ2CbsT73OLS0gwicjPEEZj3D0w1bc5Hx6Kurjh2Q9Dx4RqAErhqCFkOO3sWGw=="; byte[] res=RSAEncrypt.decrypt(RSAEncrypt.loadPrivateKeyByStr(priKey), Base64.decodeBase64(cipher)); String restr=new String(res); System.out.println("原文:"+plainText); System.out.println("加密:"+cipher); System.out.println("解密:"+restr); System.out.println(); } }
运行结果如下所示:
--------------公钥加密私钥解密过程------------------- 原文:ihep_公钥加密私钥解密 加密:R7HZzg6aOwuGEITA4P8s7HE/RZq/W1tik4CT/5Nf+GqwuJJC7n2CJxgL72TNwXrTDr0Jku9AyRZ2GoD5mwn7DLhAANVv0O0SMAGGRX+3rg4owv3AdyjjZhV1GjQdeClHrLq/MdTbCsvBCNo4vf6sjwEpuSlqTHqr+ioP+mIqz/r3dQwT86tu4mDJ61h5M51c74M25Q648Eh2O8AzvHgVn5SHaQgjVUZqZJl5zG4WdiPwuTKZEkEnp+4ie/uW1uyv/4IkfmF9B2rEP5KJOdbIXEw5lxZeGs1nGZeUqdh5Is6wVWUHnNDOwpRk6BDqcjxH7cye3PhqpgtyO7BwLm7RIg== 解密:ihep_公钥加密私钥解密
我从网上找到JS-RSA的代码地址:https://github.com/openstack/xstatic-jsencrypt/blob/master/xstatic/pkg/jsencrypt/data/jsencrypt.js,使用方法如下:
首先引入jsencrypt.js,然后获取RSA的公钥和私钥。 var encrypt=new JSEncrypt(); encrypt.setPublicKey(RSA的公钥); encrypt.encrypt(加密的内容); 这样加密就成功了,然后解密也很简单。 encrypt.setPrivateKey(RSA的私钥); encrypt.decrypt(解密的内容);
将jsencrypt.js拷贝下来,然后F12在浏览器中运行如下:
当然,我想进一步验证JS-RSA用公钥加密得到加密串,用java来解密,看是否OK,于是把上面JS-RSA生成密文拷贝到java代码中,如下所示:
package com.bijian.study; import org.apache.commons.codec.binary.Base64; public class MainTest { public static void main(String[] args) throws Exception { String cipher = "sx2Rwuokxwm6UnnsEjMBUCAee5Lc7lg8K9XU1EYzXmEuBvhyyNxxBwsl25dFridOeYhxuVuMbxIqK1xhroyzb0d+tdFrAalQ6DK+OMaUIHjKfP1v3JIVJyTVE8BdLoTd+982PwPbe0TeKfCq5HYSjqb+5AWv5dYyVyFha4v373+HmWQxG+nTFN2lnlnPBbG0cWO+ykdmtfKRtAyhxJ5uYnWYhFzbbDfExmTMi4rwkJOWH5YmuxRRb6v1o6x32+Fr+WgtCXq6Nkq58epSzz80GPGn4BfOd4mj9wxs62GWj8O6sHm+yBgfNOB+rPE82PGcNKkL7eHoXpHGlY51KTKE2A=="; String priKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDdIFr0qbNFWF3KxzqDNKi7Fof6YaXnGEhW7wA+747duRjjCWKeVzo7hkMYdLSQkdjX8qf0PXGPOmeTumMs5E++mBmZy5gXkEl1Au2sDEgvBunLjZ2dGg+ztBFKIbawpyOycqhFKzNEivvSUU4XTlH1S26ZrLkcU5YWJBqqEe3CndJ+9PbnRtGjw0oHkm0JuwpAMWxY09xXtzKr8IpeJsaN56XFN1ZHtcEh4GGMxNZg7xcGHOUkDwx0a8PD4Rv5OIX/vhiqGgMCuJQqHfqKo5s8oWSBni45x++h7Xk3EmLr4kVqG1HcXC/G6RhYGVOA+CE5phojthfdVMC8GhHNQz3bAgMBAAECggEBAL+zfSb+t9w2b5mMfr2guWb4cYovfZSLCKvVJ3FoXYL7JQgu6sA6/tD75M8e3is3RbZxOAoV+o0hJQp9W91fUYL6ebdLOd+zxvsaPtIZE7sxUx6U9z9riJFSWmraL3eWbuwVWqwcd6XEl+wNcJXj4Em3y3qOsyxLiqJHSpaGVImSi8xgIgNpnij9lbR2ljnv/4SWWyx8Uz4837MhClWDdAbsA5demnBNbMzw2vgvBOF6PrMxCZnw+aL7t8g3HeSS6jSUXTYxPL10yNTHX4Bt7LAY6lDfpZQ4IrH+BWRobpbLeeyjM2zkzaNXtTSKq/W/+4lGfxNQfOIUTQCd++erdIECgYEA/OiZgB4E1SE9Ekh+lXWsTkOU3Tb4NJlTwuV4RufoOBLexLbclz82j+4C6E3NUuaacSo9KLaYknUATzrKGDHN3icJIcG4575vzsvSzOn/cJk0o/Jc4uVX2cEoPxaXIkMN+21j9KqxYLQ3xGY5wFXR/6CMku2YuyyFu97gHRSglSUCgYEA39RNjrRxWA4vtnm9yamDVlDcbxxF663g9W88E+xp6cZe+2032Golhbhhp8bjV0hyWWFj5VObJ8tqwgRfcKhpy8luBHxR4b4vgqPKL4nxm1Phtg/lIZIowUSdeIxE9BnTId4Ekx5hqOZCe8G3WFba7uAZ/sS3Ils6zR1Wzv3Plv8CgYEA84b+GBHP0XJaHjrUORLAQfRtab2+rtddgnP3pz8zqprxCzaRnsntvhYPkqUoKsWGvaVQkt2QeKZVD/WqGDYM5/dqoaiqZexIOTam204O+9tqhtufeZQhTbrjCCy2hvVOh2ZEM5oRhu7CLEnLHlsFBUMRWYGT6dfrRoZMA3STVEkCgYEAw6SKdiX6vIEJ63HWFiL5DcV4KBaKd0pwy5cC6FdI7HHcK+B3Y87EJXHYyhHqPSyx5rZd3uGJSOtg0V2JHqvWba4PYBRabfsTBBmubIcijCZxr/WMzh83SFd1XR0eWE8KYRvy27U+n6dEjW/xlmG00/9GOY4wlPMxHoB6lEr93HkCgYBovoZekXRiiYjVXfDDxh5RgKXXbpESuW+5M/NoRje07uj9KwXiCagvyr71Ahx0m626ysRATSDKJ9xR6y28hmuD0e8ju29jtsR/r66vetfb5KdpmQ2CbsT73OLS0gwicjPEEZj3D0w1bc5Hx6Kurjh2Q9Dx4RqAErhqCFkOO3sWGw=="; byte[] res=RSAEncrypt.decrypt(RSAEncrypt.loadPrivateKeyByStr(priKey), Base64.decodeBase64(cipher)); String restr=new String(res); System.out.println("解密:"+restr); System.out.println(); } }
运行结果如下所示:
这说明JS-RSA用公钥加密得到加密串,用java来解密,完全是OK的。
相关推荐
var RSA = require('../../utils/wxapp_rsa.js') 2、调用 var privateKey_pkcs1 = '-----BEGIN RSA PRIVATE KEY-----MIICXQIBAAKBgQCk7WKdggwBOtteLL5sPom8RYCjuw0hy6R1jH39tCaep1Dns02bi4CYHk2dSR / t0ABgF5...
前端RSA加密解密的使用,含jsencrypt.js文件(uni-app也可用)
使用RSA非对称加密完成JavaScript前端RSA加密和分段加解密,最近研究了RSA非对称加密,关于什么是RSA,网上各种文章一搜一大把,但是关于如何使用RSA完成前端的组合加密解密,东西就非常少了,并且由于RSA的特性,一...
易语言调用JSEncrypt实现RSA加密解密。Tags:JSEncryptRSA加密解密。
经过本人修改,简化并完善了别人的代码,使其更加的容易理解和学习! 此为一个完整的项目,...功能:服务端随机生成密钥,JS用公钥加密,服务端用私钥解密。用到的JS加密文件是从官网下载的最新版,速度快,稳定性好!
JS用RSA加密解密技术对密码进行加密解密,再在后台使用对应公钥私钥参数进行解密,提升数据安全 jsencrypt.min.js
要用nodejs开发接口,实现远程调用,如果裸奔太危险了,就在网上找了一下nodejs的加密,感觉node-rsa挺不错的,下面来总结一下简单的rsa加密解密用法 初始化环境 新建一个文件夹 node-rsa-demo , 终端进入,运行下面...
前端使用jsencrypt进行RSA加密解密(uniapp也可用) 一、引入jsencrypt.js文件 jsencrypt.js下载:https://download.csdn.net/download/qq_34692870/85738283?spm=1001.2014.3 值得一提的是,若是引入正常的...
Js Java Rsa 加密解密,具体用法请看blog,里面包含js库,java jar包,和一个别人写的可以完成加密解密的demo
rsa加密解密js文件
1.java-RSA加密解密 2.java-zip加密压缩 3.js数据加密MD5 SHA1 RSA 里面都有使用方法和jar包、js,
RSA前端加解密。是通过用jsencrypt.min.js来实现的,支持超长文本加解密。亲测可用。
* RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。 * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。 * RSA加密解密:私钥...
使用JS RSA公钥加密,可使用PHP RSA私钥解密、使用PHP RSA公钥加密,可使用JS RSA私钥解密
jsencrypt.min.js通过JSEncrypt分段加密解密,自己添加了分段加解密的方法
综合网上javasript和java RSA加密解密资源,实现了java和javascript RSA加密解密的互操作,都可以生成公钥传给对方加密然后回传密文用自己的私钥解密。
/// RSA加密解密及RSA签名和验证 /// </summary> public class RSACryption { public RSACryption() { } #region RSA 加密解密 #region RSA 的密钥产生 /// /// RSA 的密钥...
RSA加密解密
//加密 var encrypt = new JSEncrypt(); encrypt.setPublicKey(PUBLIC_KEY); var encrypted = encrypt.encryptLong("results"); console.log('加密后数据:%o', encrypted); //解密 var decrypt = new JSEncrypt(); ...