javaWeb中RSA的加密使用

摘要:
加密算法通常用于各种网站。今天整理代码时,我看到我们的项目中使用了RSA加密,所以我理解它。RSA算法涉及三个参数,n、e1和e2。其中,n是两个大素数p和q的乘积,n的二进制表示所占用的位数是所谓的密钥长度。接下来是Javascript处理。首先,介绍三个js文件RSA。js、BigInt。js,Barrett JsfunctiondoEncrypt(){varresult=$.val();setMaxDigits;//三个参数,即公钥索引、私钥索引、模块密钥=newRSAKeyPair;//生成密文结果=encryptedString;$.attr;$.attr;}然后,由生成的公钥生成的公钥被传送回。

加密算法在各个网站运用很平常,今天整理代码的时候看到了我们项目中运用了RSA加密,就了解了一下。

先简单说一下RSA加密算法原理,RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

RSA的算法涉及三个参数,n、e1、e2。
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥(n,e2)为私钥。
RSAPublicKey rsap;
rsap = (RSAPublicKey) RSAUtil.getKeyPair().getPublic();
//
String module = rsap.getModulus().toString(16);
//公钥指数
String empoent = rsap.getPublicExponent().toString(16);
request.setAttribute("m", module);
request.setAttribute("e", empoent);

这是java代码,简单来说就是将模和公钥指数传回到前台页面上,按我的理解module就是上面所说的nempoent也就是上面说的e1

接着是Javascript的处理,先引入3个js文件RSA.js,BigInt.js,Barrett.js(网上可以随便找到)

function doEncrypt(){
  var result = $("#password").val();
  setMaxDigits(130);
   //3个参数,分别是公钥指数,私钥指数,module  (一般module是1024位的长度,私钥肯定是不会传到前台的)       
  key = new RSAKeyPair("12345","","12a3d32ad");
  //生成密文
  result = encryptedString(key, encodeURIComponent(result));
  $("#encrypt").attr("value", 1);
  $("#pwd").attr("value", result);
}

之后就把生成的公钥生成的公钥传回去就行了。

RSAUtils.decryptByPrivateKey(mi, priKey);  

然后把传回去的密文通过私钥进行解密就行了,大致过程就是这样。

 

免责声明:文章转载自《javaWeb中RSA的加密使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇深入Android渲染机制vue使用keep-alive缓存页面,返回页面时刷新部分数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SSLTLS 服务器瞬时 Diffie-Hellman 公共密钥过弱【原理扫描】解决说明

一.  修改SSL密码套件 1.1  加固方法: 1.1.1  操作步骤: 第一步:按下' Win + R',进入"运行",键入" gpedit.msc",打开"本地组策略编辑器"。 第二步:打开计算机配置->管理模板->网络->SSL配置设置。 第三步:在"SSL密码套件顺序"选项上,右键"编辑"->在"SSL密码套件顺序"选在"...

彻底理解RSA算法原理

1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。在了解RSA算法之前,先熟悉下几个术语 根据密钥的使用方法,可以将密码分为对称密码和公钥密码 对称密码:加密和解密使用同一种密钥的方式 公钥密码:加密和解密使用不同的密码的方式,因此公钥密码通常也称为非对称密码。 2. RSA加密 RSA的加密过程可以使用一个通式...

id_rsa 与 id_rsa.pub 文件详解

SSH 在正式说 id_rsa.pub,之前有必要先说说 SSH。 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。 利用 SSH 协议可以有效防止远程管理过程中的信息泄...

php生成RSA公钥私钥方法-OPENSSL

一,环境 windows + php7.2 二,方法实现 $config = array('config' =>'D:phpwwwrootphpextrassslopenssl.cnf',  //安装PHP7会自带这个配置文件'digest_alg' => 'sha256',                 //可以用openssl_get_m...

PHP支付宝接口RSA验证

这两天一直困扰的PHP RSA签名验证问题终于解决了,由于之前RSA接触的不多,再加上官方至今还未有PHP的SDK可供参考,因此走了一些弯路,写在这里和大家分享。     虽然支付宝官方还未提供相关SDK,PHP确实可以实现RSA方式的签名,这点其实很重要,由于不熟悉,在遇到困难的时候,经常会不由自主地想到是否PHP不支持RSA签名,干脆用MD5得了,这样...

Java-文件加密传输(摘要+签名)

Java-文件加密传输(摘要+签名) 文件加密传输其实就是将文件以二进制格式进行传输。其中加密文件主要由:源文件二进制文件、源文件数字摘要、数字签名、特征码等等组成。摘要可确认文件的唯一性,数字签名则是对摘要进行了加密。 本文主要记录使用RSA加密方式其中生成RSA密钥主要介绍二种方式: 1、安装openssl情况下使用Linux命令生成 2、Java代...