整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

网页的加密解密,JS完整代码

网页的加密解密,JS完整代码

们可以针对不同的访问者,隐藏部分内容,这时候就用到客户端的网页加密解密技术,用作选择性隐蔽展示。当然客户端的加密安全度是不能与服务器相提并论,肯定不能用于密码这类内容的加密,但对于一般级别的内容用作展示已经够了。

主要学习的是:

string 对象的charCodeAt()方法和fromCharCode()方法对字符的ASCII编码进行获取和修改。

下面是完整代码:

页头

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>网页加密及解密</title>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

</head>

<body>

内容

<p><textarea id="text1" name="textfield" cols="50" rows="5">钱庄王员外这个人怎么样?</textarea></p>

<input type="button" name="Button1" value="加密" onClick="Encrypt(text1.value)">

<input type="button" name="Button2" value="解密" onClick="unEncrypt(text1.value)">

<script language="JavaScript">

var p=0;

加密

function Encrypt(Text) {

p=p+1;

output=new String;

alterText=new Array();

varCost=new Array();

TextSize=Text.length;

for (i=0; i < TextSize; i++) {

idea=Math.round(Math.random() * 111) + 77;

alterText[i]=Text.charCodeAt(i) + idea;

varCost[i]=idea;

}

for (i=0; i < TextSize; i++) {

output +=String.fromCharCode(alterText[i], varCost[i]);

}

text1.value=output;

}

解密

function unEncrypt(Text) {

if (p>0){

p=p-1;

output=new String;

alterText1=new Array();

varCost1=new Array();

TextSize=Text.length;

for (i=0; i < TextSize; i++) {

alterText[i]=Text.charCodeAt(i);

varCost[i]=Text.charCodeAt(i + 1);

}

for (i=0; i < TextSize; i=i+2) {

output +=String.fromCharCode(alterText[i] - varCost[i]);

}

text1.value=output;

}

}

页尾

</script>

</body>

</html>

案列视频演示:

JS案例演示,网页的加密解密

(科技自媒体原创作者:钱庄王员外)

标站点:

aHR0cHMlM0EvL2subS5hdXRvaG9tZS5jb20uY24vZGV0YWlsL3NoYXJlXzAxZG1xeThmYTE2OHZrYWU5aDYwdmcwMDAwLmh0bWw=

该地址经过base64加密,可以通过如下地址进行解密:

https://base64.supfree.net

准备工具:

chome浏览器,python3.7语言环境,pycharm,百度字体编辑器:http://fontstore.baidu.com/static/editor/index.html

破解方法:

1、打开chrome浏览器,在浏览器地址栏中输入目标地址,打开网页后,在页面中点击鼠标右键,选择检查,可以看到相关文字已被加密。

文字被加密

2、可以通过复制,来验证文字是否被加密。如复制:

老朋友的推荐

复制出的文字为:

老朋友?推荐

3、此类现象为文字被CSS样式加密,破解步骤如下:

1、通过浏览器开发者模式,找到页面中文字所使用的css样式
2、通过抓包等方法找到加载的css文件,通过正则表达式取出字体文件URL
3、通过百度字体编辑器解析woff文件:http://fontstore.baidu.com/static/editor/index.html
4、使用fontTools处理字体文件,得出对应关系
5、通过对应关系解析加密字体

4、首先使用python的request模块请求该页面,通过正则表达式获取字体文件URL,请求该URL,获取到字体文件,写入到本地。

5、通过百度字体编辑器,解析ttf文件

6、通过百度字体编辑器,可以看到,"的"对应的字体编码为"$EC2A",接下来通过python下的fontTools模块读取该TTF文件,并建立文字对应关系,保存为字典。

7、通过for循环遍历该文字对应关系字典,对原网页返回进行替换,即可得到正常数据。

老朋友的推荐,去看了一几个牌子,头都看晕了,没有结果,决定不了买哪个牌子,九了女儿意见,准备在荣威里面选盘款。性价上最高的就是I5了,看中这款的原因,并不是因为配置高,也不是养力强,而是囊中羞涩,预算控有那么电啊?,而荣威这个品牌过硬,质量可靠,故障率低,朋友买了都说挺一的。暂时没有,还是觉外有点说不过去啊!买车看车子做这个决定,是和女儿共同商量决定的,我看中的是这个牌子的知名度,品质这些方面,女儿的话是喜欢这款车型的十观,女孩子嘛,都是十貌协会,两厢车上较炫酷,十形时尚养感,适合年轻妹子。女儿盘看就中意了。

代码参考:

https://github.com/freedom-wy/js-reverse/tree/master/autohome/koubei

欢迎交流,一起学习,一起进步。

另外,我在慕课网上主讲课程:

《Python爬虫工程师必学——App数据抓取实战》,还请各位大神多多支持。课程地址:

我们最近遇到了一些文件被恶意下载的情况。如果不及时处理,OSS的每日流量费用将超过1000元。为了解决这个紧急问题,我们不得不暂时下架这些文件。

今晚,发现了一个有趣的项目:Staticrypt。它可以给静态HTML页面加上密码保护,非常实用。

Staticrypt

安全加密并密码保护你的公共静态HTML文件的内容,这些文件将在浏览器中解密,无需任何后端支持,因此可以通过Netlify、GitHub Pages等静态托管服务进行发布。

StatiCrypt使用AES-256和WebCrypto技术,以你的长密码加密HTML文件,并返回一个静态HTML页面,该页面会显示一个密码提示,现在你可以安全地上传这个页面,其中包含了你的加密内容,解密过程在客户端的JavaScript中进行。

StatiCrypt是怎么工作的呢?

StatiCrypt 能在没有后端的情况下保护 HTML 页面密码。

StatiCrypt 使用 WebCrypto 技术来生成一个静态的、受密码保护的页面,页面会在浏览器中解密。

你可以将生成的页面上传到一个静态内容托管的平台(比如 GitHub Pages)。

这样,用户访问页面时会看到一个密码输入框,输入正确的密码后,JavaScript 就会在浏览器中解密并加载你的 HTML 内容。

简单来说,它就是加密你的页面,并把密码输入界面做成一个用户友好的方式放在新的文件里。

StatiCrypt 采用的AES-256 加密,虽然 AES-256 是最先进的加密技术之一,但在面对暴力破解(brute-force)或字典攻击(dictionary attack)时,若密码短语不够长或不够复杂,依然有可能被攻破。因此,还需要使用一个长且不寻常的密码短语以提高安全性。

几个名词解释:

1. AES-256 (高级加密标准-256位): 一种对称加密算法,使用 256 位的密钥来加密和解密数据,被广泛认为是非常安全的加密标准。

2. 暴力破解 (brute-force attack): 一种攻击方法,攻击者尝试所有可能的密码组合,直到找到正确的密码。由于密码的复杂性越高,暴力破解所需的时间就越长。

3. 字典攻击 (dictionary attack): 一种攻击方法,攻击者使用一个预先定义的密码字典(包含常见密码或密码组合)来尝试破解密码。与暴力破解不同,字典攻击利用了密码的常见性来提高破解效率。

CLI

Staticrypt通过npm作为CLI提供,使用npm install -g staticrypt进行安装,并按如下方式使用:

Usage: staticrypt <filename><passphrase>[options]

Options:
--help               显示帮助信息[boolean]
--version            显示版本号[boolean]
-e,--embed          是否在页面中嵌入 crypto-js(或者使用外部 CDN)[boolean][default:true]
-o,--output         生成的加密文件的文件名/路径[string][default:null]
-t,--title          输出 HTML 页面的标题[string][default:"Protected Page"]
-i,--instructions   显示给用户的特别说明[string][default:null]
-f,--file-template自定义 HTML 模板的路径,包含密码提示框[string][default:"[...]/cli/password_template.html"]

使用示例

  • ? staticrypt test.html mysecretpassword->创建test_encrypted.html文件
  • ? find . -type f -name "*.html" -exec staticrypt {} mypassword \;->为目录中的所有HTML文件创建加密文件

完整入门

1、cd 静态文件夹

2、输入:staticrypt example.html -p leadsoft,对当前页面进行加密。

3、输入:http-server

4、访问http://127.0.0.1:8080/example.html

5、输入密码:leadsoft

6、现在可以愉快的访问页面了。

文件大小,也从1K增加到了35k

7、当然,你可以可以自定义HTML以使加密页面符合您的风格