//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;
}
分享到:
相关推荐
JavaScript加密解密库CryptoJS是开发人员在Web应用中实现安全数据处理的常用工具,尤其在需要保护用户敏感信息如密码、API密钥等场景下。这个库支持多种加密算法,包括对称加密(如AES、DES)、非对称加密(如RSA)...
在实际应用中,JavaScript加密解密并非总是完美的解决方案,因为聪明的攻击者仍可能找到绕过的方法。因此,结合其他安全措施,如服务器端验证、HTTPS传输和授权机制,可以提供更全面的保护。 总的来说,`redecoder`...
JavaScript加密解密是一种常见的安全措施,用于保护网页中的敏感数据,如用户信息、API密钥等,防止被未经授权的第三方获取。以下是对文档中提到的7种JavaScript加密方法的详细说明: 1. **使用`escape()`和`...
JavaScript加密解密技术是网页开发中保护代码不被轻易复制的一种策略。虽然JavaScript代码在浏览器中执行,使得绝对保密变得困难,但是通过各种加密手段,可以增加破解的难度。以下介绍七种JavaScript加密方法: 1....
黑防攻防实验室到目前为止开放了5轮,大家都非常喜欢,很多朋友都参加了我们...希望能给大家提供帮助,于是顺理成章地便有了本文,在第三轮实验室即将结束的时候,给大家系统讲解如何使用Java Script对网页进行加密解密
在本示例中,我们将探讨如何使用Java和JavaScript实现RSA加密解密。 在Java中,`java.security`和`javax.crypto`包提供了实现RSA加密解密所需的类和接口。首先,我们需要生成一对公钥和私钥。这通常通过`...
本文一共介绍了七种javascript加密方法: 在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的javascript代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己...
Java和JavaScript之间的DES加密解密是信息安全领域中的一个重要话题,主要涉及到数据的保护和通信的安全。DES(Data Encryption Standard)是一种古老的对称加密算法,尽管它在安全性上已不被视为最佳选择,但在某些...
一个用于JavaScript加密、解密、压缩、排版的工具,单个HTML文件。体积小巧,和现有的一些在线工具相比,代码直接在本地处理,排除了在线工具在后台保存代码的可能性。同时,适合在没有网络的环境下使用。
JavaScript加密和Java解密是两种在软件开发中用于保护数据安全的技术。JavaScript通常用于前端,为用户提供了交互式体验,但因为代码可被浏览器直接查看,所以可能存在安全风险。为了保护敏感信息,开发者可能选择对...
本篇文章将深入探讨JavaScript加密解密的原理、方法以及如何学习这方面的知识。 首先,JavaScript加密通常涉及两种主要类型:源代码混淆和数据加密。源代码混淆是通过改变变量名、函数名和结构,使代码变得难以阅读...
本资源提供了一个JavaScript加密解密插件,适用于前端开发人员,帮助他们在浏览器环境中实现数据的安全传输。 **AES加密算法** AES(Advanced Encryption Standard)是一种高级加密标准,是目前最常用的对称加密...
在JavaScript中,有时我们需要对URL中的参数进行加密和解密,以确保数据的安全性,防止敏感信息被轻易读取。本文提供的代码片段就是用于实现这个目的的一个示例。让我们深入了解一下这段代码的工作原理和相关知识点...
然而,值得注意的是,提供的文件"hdjso.exe"似乎是一个Windows可执行文件,并非JavaScript代码或文档,因此无法直接从中获取JavaScript加密解密的具体实现。在实际项目中,应当根据具体需求选择合适的加密库和方法,...
### JavaScript加密解密七种方法总结分析 #### 一、最简单的加密解密:使用 `escape()` 和 `unescape()` - **加密方法**:利用 `escape()` 函数对 JavaScript 代码进行编码,将字符串中的每个字符转换为其 ASCII ...
在实现AES加密解密时,可以使用各种编程语言的库,例如Java的JCE(Java Cryptography Extension)、Python的PyCryptodome库等,它们都提供了方便的API来执行AES加密和解密操作。在使用这些库时,需要按照库的文档...
JavaScript中的DES(Data Encryption Standard)加密解密算法是一种广泛应用的对称加密技术,它基于64位的数据块进行操作,并使用64位的密钥。虽然DES在安全性方面已不如现代的加密算法如AES(Advanced Encryption ...
加密一个提供加密和解密功能的简单库。 使用带有 AES 加密的 crypto-js 库。 该库只是将文档中的示例打包成两个易于使用的函数。安装 npm install encryption --save用法 var encryption = require('encryption'), ...
6. **JavaScript加密解密**:在ASP中,可能还会涉及到JavaScript代码的加密解密,特别是当JavaScript用于增强客户端交互时。 7. **版权和法律问题**:加密解密工具虽然提供了代码保护,但使用它们必须遵循版权法规...