加密
//str 是想加密的字符串
//pwd 是key
function encrypt(str, pwd) {
if (pwd == null || pwd.length <= 0) {
alert("Please enter a password with which to encrypt the message.");
return null;
}
var prand = "";
for (var i = 0; i < pwd.length; i++) {
prand += pwd.charCodeAt(i).toString();
}
var sPos = Math.floor(prand.length / 5);
var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos * 2) + prand.charAt(sPos * 3) + prand.charAt(sPos * 4) + prand.charAt(sPos * 5));
var incr = Math.ceil(pwd.length / 2);
var modu = Math.pow(2, 31) - 1;
if (mult < 2) {
alert("Algorithm cannot find a suitable hash. Please choose a different password. Possible considerations are to choose a more complex or longer password.");
return null;
}
var salt = Math.round(Math.random() * 1000000000) % 100000000;
prand += salt;
while (prand.length > 10) {
prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString();
}
prand = (mult * prand + incr) % modu;
var enc_chr = "";
var enc_str = "";
for (var i = 0; i < str.length; i++) {
enc_chr = parseInt(str.charCodeAt(i) ^ Math.floor((prand / modu) * 255));
if (enc_chr < 16) {
enc_str += "0" + enc_chr.toString(16);
} else {
enc_str += enc_chr.toString(16);
}
prand = (mult * prand + incr) % modu;
}
salt = salt.toString(16);
while (salt.length < 8) {
salt = "0" + salt;
}
enc_str += salt;
return enc_str;
}
解密实现
function decrypt(str, pwd) ...{
if (str == null || str.length < 8) ...{
alert("A salt value could not be extracted from the encrypted message because it's length is too short. The message cannot be decrypted.");
return;
}
if (pwd == null || pwd.length <= 0) ...{
alert("Please enter a password with which to decrypt the message.");
return;
}
var prand = "";
for (var i = 0; i < pwd.length; i++) ...{
prand += pwd.charCodeAt(i).toString();
}
var sPos = Math.floor(prand.length / 5);
var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos * 2) + prand.charAt(sPos * 3) + prand.charAt(sPos * 4) + prand.charAt(sPos * 5));
var incr = Math.round(pwd.length / 2);
var modu = Math.pow(2, 31) - 1;
var salt = parseInt(str.substring(str.length - 8, str.length), 16);
str = str.substring(0, str.length - 8);
prand += salt;
while (prand.length > 10) ...{
prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString();
}
prand = (mult * prand + incr) % modu;
var enc_chr = "";
var enc_str = "";
for (var i = 0; i < str.length; i += 2) ...{
enc_chr = parseInt(parseInt(str.substring(i, i + 2), 16) ^ Math.floor((prand / modu) * 255));
enc_str += String.fromCharCode(enc_chr);
prand = (mult * prand + incr) % modu;
}
return enc_str;
}
分享到:
相关推荐
Java和JavaScript之间的DES加密解密是信息安全领域中的一个重要话题,主要涉及到数据的保护和通信的安全。DES(Data Encryption Standard)是一种古老的对称加密算法,尽管它在安全性上已不被视为最佳选择,但在某些...
JavaScript写的DES加密解密的代码,运行模式为CBC,纯源码觉得可以运行。加密前:select item_no,item_name,price,sale_price from t_bd_item_info where item_no='00002', 加密后:V+WKfe9+DcuPpwU7mJ8krkgpztgU7...
JavaScript实现DES加密解密的关键点: 1. 密钥扩展:DES的64位密钥实际上只有56位用于加密,因为每7位一组,其中第8位是校验位,不参与计算。JavaScript中需要将64位密钥转换为56位的有效密钥。 2. 使用库:由于...
在Java和JavaScript中实现3DES加密和解密,主要涉及以下几个关键知识点: 1. **密钥生成**:3DES需要一个168位的密钥,但通常我们提供的是一个128位或更短的密钥。Java中的`javax.crypto.SecretKeyFactory`和`javax...
标题中的"javascript前端DES加密,VB.NET、C#后端服务器解密"涉及到的是一个常见的安全实践,即在客户端(JavaScript)对敏感数据(如账号密码)进行加密,然后在服务器端(VB.NET或C#)进行解密,以保护数据在传输...
在JavaScript中,虽然内置的加密库不如Java强大,但我们可以通过Node.js的`crypto`模块来实现DES和3DES的加密解密。这个模块提供了与Java类似的API,可以创建`Cipher`对象并执行加密解密操作。然而,JavaScript中的...
在JS版的DES加密解密中,我们可以看到JavaScript语言被用来实现这一功能,这对于Web应用中的安全通信非常有用。 DES加密过程分为以下几个步骤: 1. **初始置换**:原始的64位明文数据经过一个固定的置换表进行变换...
在JavaScript中实现3DES加密解密,通常需要依赖于某些库,如CryptoJS。这些库提供了API,使得开发者能够方便地在浏览器环境中进行加密解密操作。描述中提到的"js加密解密"指的是使用JavaScript编写的代码片段,可能...
本篇将详细介绍如何在网页前端使用JavaScript进行3DES加密,并在后端Java环境中进行解密。 一、3DES加密原理 3DES是DES的加强版,它使用了3个不同的56位密钥,通过3次独立的DES加密过程来提高安全性。具体流程如下...
因项目需要,要用js加密后,提交给C#解密,在网上找了半天,无数个版本,却不能互相使用 就随便下载了一个JS版本的,把它改写成C#版本的 这样JS加密后,C#也能解密 反之C#加密后,JS也能解密 共享给大家吧。 注:...
在本文中,我们将深入探讨DES加密解密原理,以及如何在JavaScript和Java之间实现互操作性的加密解密功能。 **DES加密原理** DES算法通过一系列复杂的置换和轮函数操作来实现数据的加密。它分为初始置换、16轮的子...
总的来说,小程序与Java后端使用DES加密解密是数据安全的一种基础实践,但考虑到当前的网络安全需求,可能需要结合其他更强的加密技术以及安全策略来提升整体的安全水平。在实际应用中,还需要关注相关的法律法规,...
本篇文章将详细探讨DES加密解密在Java和JavaScript中的应用,并且重点讨论如何确保在两者之间得到一致的结果。 DES算法基于64位的块加密,使用56位的密钥进行操作。它通过一系列复杂的数学变换,将明文数据转换成...
DES加密可以确保这些数据在传输过程中不被非法获取,防止数据泄露。`crypto-js`库提供了一个方便的接口,使得开发者可以直接在JavaScript环境中实现加密和解密功能,无需依赖服务器端的处理。 DEMO的核心部分是使用...
在你提供的"DES加密算法JS.html"文件中,应该包含了详细的JavaScript代码实现,你可以参考这些代码理解DES加密解密的过程,以及如何处理中文字符。在阅读和理解代码时,注意理解加密解密的核心步骤,以及如何适当地...
本实例将探讨如何使用JavaScript实现DES加密解密功能。 首先,我们需要理解DES的基本原理。DES是一种分组密码,它将明文数据分成64位的数据块,然后用64位的密钥对每个数据块进行加密。实际的DES算法中,有56位是...
在线DES加密解密代码是一个基于JavaScript实现的加密解密工具,主要使用了DES(Data Encryption Standard)算法。DES是一种对称加密算法,广泛应用于数据安全领域。它在1970年代由IBM开发,后来被美国国家标准局采纳...
在JavaScript中实现3DES加密通常是为了在网络通信中保护敏感数据,例如在浏览器与服务器之间传输用户密码、信用卡信息等。以下是对3DES加密算法及其在JavaScript前端应用的详细说明: ### 1. 3DES工作原理 3DES由3...