如何用D7實作下面的密碼加密程序啊?求高手幫忙寫下代碼,謝謝啦
//加密模塊
var rsa = (function($){
var publicKey
// 獲取公鑰
var getPubKey = function(callback){
if(publicKey) return callback();
$.post('/accounts/prelogin').always(function(json){
if(json && json.status == 'ok'){
publicKey = json.data
if(callback) callback()
}
})
}
// rsa加密
var encrypt = function(txt){
if(!publicKey) return txt
var rsa = new RSA.RSAKey()
rsa.setPublic(publicKey.n, publicKey.e)
var res = rsa.encrypt(txt)
res = RSA.linebrk( RSA.hex2b64(res) )
return res
}
return {
publicKey: publicKey,
encrypt: encrypt,
getPubKey: getPubKey
}
})(jQuery);
/*********************************
KP郵箱注冊插件v1.0
作者: wangning1
**********************************/
;(function($){
$.fn.emailRegister = function(options){
options = $.extend({
formEle: $(this),
msgEle: $(this).find(".msg"),
submitUrl : $(this).attr('action'),
loginIdEle: $(this).find("input[name='loginId']"),
pwdEle: $(this).find("input[name='password']"),
repwdEle: $(this).find("input[name='repassword']"),
captchaEle: $(this).find("input[name='captcha']"),
protocal: $('#ereg-protocol'),
success: $.noop
}, options);
var ERROR_MESSAGES = {
"serverError": "服務器維護中(api),請稍后再試",
"accountServerError": "服務器維護中(account),請稍后再試",
"unknownError": "服務器錯誤",
"clientBadParams": "手機號格式不正確",
"mobileExists": "手機號已注冊或已系結過其它賬號",
"sendMsgError": "短信服務器例外,請稍后再試",
"tooManyRequests": "您今天的短信請求太多",
"tooOften": "短信請求太頻繁,請稍后再試",
"invalidCode": "無效的驗證碼",
'captchaError' : '驗證碼錯誤',
"invalidMobile": "無效的手機號,請檢查您的輸入",
"emptyPassword": "密碼不能為空",
"passwordTooLong": "密碼太長",
"noSuchUser": "操作失敗,無此用戶",
"bindMobileBefore": "手機號已注冊或系結過其它賬號",
"needPassword": "用戶郵箱為空,需要密碼",
"anNotPassword": "用戶有郵箱,不能輸入密碼",
"sameEmailRegisteredBefore": "該郵箱已注冊"
};
$('#change-code, #captcha').click(function() {
$("#captcha").attr('src', '/captcha?' + new Date().getTime())
})
function showMsg(Msg){
options.msgEle.html(Msg);
}
$(this).submit(function(){
return false;
})
$(this).submit(function(){
if(checkLoginId() && checkPwd() && checkProtocol()){
submit();
}
})
function submit() {
var loginId = $.trim(options.loginIdEle.val());
var pwd = $.trim(options.pwdEle.val());
var captcha = $.trim(options.captchaEle.val());
rsa.getPubKey(function(){
var para = {
'loginId': loginId,
'password': pwd,
}
if(true){
para.security = 1;
para.loginId = rsa.encrypt(para.loginId);
para.password = rsa.encrypt(para.password);
para.captcha = captcha;
}
$.post(options.submitUrl, para, function(data){
if(data.status == 'ok'){
options.formEle.trigger('reset');
options.success('注冊成功');
}else{
if(typeof ERROR_MESSAGES[data.status] == 'string'){
showMsg(ERROR_MESSAGES[data.status]);
}else{
showMsg('賬號密碼不正確,錯誤碼:' + data.status);
}
}
}, 'json');
});
}
function checkLoginId() {
var loginId = $.trim(options.loginIdEle.val());
if('' === loginId) {
showMsg('郵箱地址不能為空');
return false;
}
if (!/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/i.test(loginId) && !/^1\d{10}$/i.test(loginId) ){
showMsg('賬號格式不正確');
return false;
}
return true;
}
//檢測是否同意注冊協議
function checkProtocol() {
if(options.protocal.attr('checked') !== 'checked'){
showMsg('請先閱讀并同意注冊協議');
return false;
}else{
showMsg(' ');
return true;
}
}
function checkPwd() {
var pwd = $.trim(options.pwdEle.val());
var repwd = $.trim(options.repwdEle.val());
if('' === pwd) {
showMsg('密碼不能為空');
return false;
}
if(pwd.length < 6 ){
showMsg('密碼過短,不能小于6個字符');
return false;
}
if(pwd.length > 32 ){
showMsg('密碼過長,不能大于32個字符');
return false;
}
if('' === repwd) {
showMsg('確認密碼不能為空');
return false;
}
if(pwd !== repwd ) {
showMsg('兩次密碼不一致');
return false;
}
return true;
}
}
})(jQuery);
uj5u.com熱心網友回復:
,RSA加密演算法!你看的那個只是呼叫的介面函式,真正的RSA演算法沒看見啊!
這種的你找個DELPHI的RSA演算法!兩個看能不能互相加解密!
uj5u.com熱心網友回復:
http://www.cityinthesky.co.uk/ 看看這里有互換加密的uj5u.com熱心網友回復:
不知道你到底想說什么,是RSA加密與解密不成功呢,還是什么?如果是RSA加密與解密問題,根本不需要發這么多代碼,一個簡單的DEMO就可以測驗出來啊轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94551.html
標籤:網絡通信/分布式開發
下一篇:一個演算法的問題,寫遞推方程式
