HTML表单之JS-RSA加密PHP解密教程

分类: 前端 加密解密

2018-02-09T19:33:56


 

随着互联网的日益发展,互联网安全成了重中之重。现在各大互联网公司开始废弃HTTP协议转向全站HTTPS加密传输。没有一种加密方式是绝对的安全,只是解密所获得的效益是否成正比。

 

我们最常见的登陆包含了用户个人的账户及密码,而密码在HTTP传输中是明文传输,这使得非法分子有机可乘,尤其是在连接公共WIFI时。

 

好吧我编不下去了,下面直接进入正题吧!!

不了解RSA加密的请  点击这里 查看百度的介绍。

本文源程序来自  OHDAVE.COM  可自行查阅

index.php:

<?php
$privateKey = file_get_contents(__DIR__.'/private_key.pem');
$private_key = openssl_pkey_get_private($privateKey);
$ciphertext = $_POST['string'];
if(!empty($ciphertext)){
$bin_ciphertext = base64_decode($ciphertext);
openssl_private_decrypt($bin_ciphertext, $plaintext, $private_key, OPENSSL_PKCS1_PADDING);
echo "密文:<br/>".$ciphertext;
echo "解密:<br/>".$plaintext;
}
?>
<html>
<head>
<script src="BigInt.js" ></script>
<script src="Barrett.js" ></script>
<script src="RSA.js"></script>
<script language="JavaScript">
var key;
function bodyLoad()
{
setMaxDigits(262);
key = new RSAKeyPair(
//这里是16进制数据
"10001",
"10001",
//rsa public key
"EDA017EBA532CD23754813203F4026C78EB9089FB7DA16ABBC5220C87BEC3B3C9684E8181AE8AE56CBAEE40BA5B2778A9BA4B59FF6C4FFFEB086E4BC288CC00E970C4CE0BEFAD7ED23FFD6D86F5B2B400ED11F20CCFF67D9DF6DA8620EE5CA20741265A5AF51AE2EF0B1D3834F3E90D5545D12CA67B629332F349020C9A5789B01BA147870108FC436CEEB401DD0BEADA4E2F0DB6AB6D506E7D0AD1C947FCEF38346E82F6D6048D2683494DE8E515243FD1C750C6E6195436BB6FA1F0E4BF86471AB30B34C2FCEEB1DAE8937C0B8DB265AC1067FF6EC46402AA2853B8D69C157C3B08F165C1976E799801F29FBD18516AAAC3B94901284202DF1E941EB9FB86F",
//
2048
);
}
function encryptString()
{
//加密
var ciphertext = encryptedString(key, document.subForm.string.value,
RSAAPP.PKCS1Padding, RSAAPP.RawEncoding);
//将转换后的HEX转换成ASIIC
document.subForm.string.value = window.btoa(ciphertext);
//控制台打印日志,调试使用
console.log(document.subForm.string.value);
//提交表单
document.subForm.submit();

}

</script>
</head>
<body onload="bodyLoad()">
<div>这是一个RAS加密解密测试代码</div>
<form action="index.php" name="subForm" method="post">
<label>请输入字符串<input type="text" name="string" value="123456"/></label>
<input type="button" value="提交" onclick="encryptString()"/>
</form>
</body>
</html>

js: http://www.ohdave.com/rsa/BigInt.js http://www.ohdave.com/rsa/Barrett.js http://www.ohdave.com/rsa/RSA.js

以上例子就是基本的RSA加密了,具体的实现方法可自行研究。 PS:ASSIC大于127的字符,可通过其他方式转转移后加密解密。如转换成URL编码、UTF-8 源码点击这里这里这里->rsa<-