您好,欢迎访问一九零五行业门户网

jQuery+C#实现参数RSA加密传输功能技巧分享

本文主要介绍了jquery+c#实现参数rsa加密传输功能,结合具体实例形式分析了js使用jsencrypt.js插件前端字符数据处理传输及c#后台数据转换与rsa加密相关操作技巧,并附带jsencrypt.js供读者下载参考使用,需要的朋友可以参考下,希望能帮助到大家。
本文实例讲述了jquery+c#实现参数rsa加密传输功能。分享给大家供大家参考,具体如下:
注意:
参数传递的+号处理,在传输时会把+变成空格,不处理后端就报错了。
1、前端代码
<!doctype html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>login</title> <script src="jquery-1.10.2.min.js"></script> <script src="jsencrypt.min.js"></script> <script type="text/javascript"> $(function () { var encrypt = new jsencrypt(); encrypt.setpublickey($("#tra").val()); var data = encrypt.encrypt("123456789"); alert(data); $("#btn").click(function () { $.ajax({ url: '@url.action("login")', data: "pwd=" + encodeuri(data).replace(/\+/g, '%2b'), //+号的处理:因为数据在网络上传输时,非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,而base64编码在传输到后端的时候,+会变成空格,因此先替换掉。后端再替换回来 type: 'post', success: function (msg) { alert(msg); } }); }); }); </script> </head> <body> <p> <input type="button" id="btn" value="点我" /> <textarea id="tra" rows="15" cols="65"> migfma0gcsqgsib3dqebaquaa4gnadcbiqkbgqca4khnwdx44ggmmiatru4gjvyt gwzzcm4t+1wjud4dn7fmlpvuk7ai4urfdeeje1rpwudjw+lj6crql8wsig7/dbtl g3ihsct6dt9h5b9ooer7k9vwuesaw/iyvl6hxiyoanabw14pvjatdmdq91tfgp6p sqyvdfirdv4r07crpqidaqab </textarea> <hr/> 注意+号的处理 </p> </body> </html>
2、后端代码
public class indexcontroller : controller { public actionresult login() { return view(); } [httppost] public actionresult login(string pwd) { //密钥格式要生成pkcs#1格式的 而不是pkcs#8格式的 string privatekey = @"miicwwibaakbgqca4khnwdx44ggmmiatru4gjvytgwzzcm4t+1wjud4dn7fmlpvuk7ai4urfdeeje1rpwudjw+lj6crql8wsig7/dbtlg3ihsct6dt9h5b9ooer7k9vw uesaw/iyvl6hxiyoanabw14pvjatdmdq91tfgp6psqyvdfirdv4r07crpqidaqab aogabb+3gdb+qeg0b1cogvst/7//uoatzpk/fgnekqqtf4ssn+h7lvhtytg9arfc jyowg8ixqmn2ljhywhptwwd2rczin2syt1svkgb70eghgqlbrafhelmw+dsvj+nd fbcfmrj1tyxlwigjrkaueaoggg8ldr8xd+xs5lerspljzgecqqcgusb7c4wf6osw edmwnf8fft5cqc1u2oiq6nbg8rafrjb7lsjhod03pmy7i4lbw3vvq4ahqpjedf1c vd+sk/bbakea9rbhqnyumv09zfeomsx3zzu+bdhtzm4bjdfea95swp1gancvvf/t dcnlbf51ehcwdegsparpukqnxryffudizqjaazeshuaa6+fyevr/jp+tuchf3mhr dxtsqtbz6qcuzqnfmxfit6hfzu4bcxowkathpsb+vfsw1mgidmgll4ovwqjajlvy v9pylezxvzcnbmvobinxlcqzmxhmfey0ks6xkabcjepdgnbhpcsk2jgyb540q00y rfqhgpmorkf4yw0aiqjad5jrtd3z2mgp/vpokhjnhqy8bbovcmwqvam6xczotczz jnv1cnsdf4wbv3lcdzyby+xr4qynuy5cfxn+8wzzaa=="; try { rsacryptoserviceprovider rsacryptoserviceprovider = creatersaproviderfromprivatekey(privatekey); //把+号,再替换回来 byte[] res = rsacryptoserviceprovider.decrypt(convert.frombase64string(pwd.replace("%2b","+")), false); return content(encoding.utf8.getstring(res)); } catch (exception exception) { } return content(""); } private rsacryptoserviceprovider creatersaproviderfromprivatekey(string privatekey) { var privatekeybits = system.convert.frombase64string(privatekey); var rsa = new rsacryptoserviceprovider(); var rsaparams = new rsaparameters(); using (binaryreader binr = new binaryreader(new memorystream(privatekeybits))) { byte bt = 0; ushort twobytes = 0; twobytes = binr.readuint16(); if (twobytes == 0x8130) binr.readbyte(); else if (twobytes == 0x8230) binr.readint16(); else throw new exception("unexpected value read binr.readuint16()"); twobytes = binr.readuint16(); if (twobytes != 0x0102) throw new exception("unexpected version"); bt = binr.readbyte(); if (bt != 0x00) throw new exception("unexpected value read binr.readbyte()"); rsaparams.modulus = binr.readbytes(getintegersize(binr)); rsaparams.exponent = binr.readbytes(getintegersize(binr)); rsaparams.d = binr.readbytes(getintegersize(binr)); rsaparams.p = binr.readbytes(getintegersize(binr)); rsaparams.q = binr.readbytes(getintegersize(binr)); rsaparams.dp = binr.readbytes(getintegersize(binr)); rsaparams.dq = binr.readbytes(getintegersize(binr)); rsaparams.inverseq = binr.readbytes(getintegersize(binr)); } rsa.importparameters(rsaparams); return rsa; } private int getintegersize(binaryreader binr) { byte bt = 0; byte lowbyte = 0x00; byte highbyte = 0x00; int count = 0; bt = binr.readbyte(); if (bt != 0x02) return 0; bt = binr.readbyte(); if (bt == 0x81) count = binr.readbyte(); else if (bt == 0x82) { highbyte = binr.readbyte(); lowbyte = binr.readbyte(); byte[] modint = { lowbyte, highbyte, 0x00, 0x00 }; count = bitconverter.toint32(modint, 0); } else { count = bt; } while (binr.readbyte() == 0x00) { count -= 1; } binr.basestream.seek(-1, seekorigin.current); return count; } }
相关推荐:
php+js+rsa数据加密传输实现代码
node.js 数据加密传输浅析
js用什么方法对ajax的post的数据进行加密传输php进行解密
以上就是jquery+c#实现参数rsa加密传输功能技巧分享的详细内容。
其它类似信息

推荐信息