在使用通用權限管理系統(吉日嘎拉)的單點登錄功能時,對登錄密碼使用了RSA加密(非對稱加密),有使用這個權限管理系統的可參考下。
前端部分,請引用以下幾個js文件:
<script type="text/javascript" src="ExtJS/jquery.js"></script> <script type="text/javascript" src="ExtJS/BigInt.js" ></script> <script type="text/javascript" src="ExtJS/RSA.js"></script> <script type="text/javascript" src="ExtJS/Barrett.js"></script>
下載:http://files.cnblogs.com/hnsongbiao/ExtJS.zip
登錄頁面前端主要代碼:
setMaxDigits(129); var key = new RSAKeyPair("<%=strPublicKeyExponent%>", "", "<%=strPublicKeyModulus%>"); var password = document.getElementById("password"); var pwd = encryptedString(key, password.value);
后台主要功能代碼:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); Session["private_key"] = rsa.ToXmlString(true); RSAParameters parameter = rsa.ExportParameters(true); strPublicKeyExponent = BytesToHexString(parameter.Exponent); strPublicKeyModulus = BytesToHexString(parameter.Modulus); 。。。。。。 rsa.FromXmlString((string)Session["private_key"]); byte[] results = rsa.Decrypt(HexStringToBytes(password), false); System.Text.ASCIIEncoding enc = new ASCIIEncoding(); password = enc.GetString(results);
下面截圖可以看到傳輸時密碼已經經過RSA非對稱加密了(我這里同時進行了對稱加密)