方法一:
有一种加密的办法是采用javascript的escape()函数,把某些符号、汉字等变成乱码,以达到迷惑人的目的。解密这种代码的办法是采用其反函数加以还原。下面是一个经过加密的例子:
<HTML>
<SCRIPT LANGUAGE="Javascript">
var Words ="%3Chtml%3E%3Cbody%20bgcolor%3D%22red%22%3E%3Cp%3E%u8FD9%u662F%u4F8B%u5B50%uFF01%uFF01%uFF1A%uFF09%3C/p%3E%3C/body%3E%3C/html%3E"
var NewWords
NewWords = unescape(Words)
document.write(NewWords)
</SCRIPT>
<BODY>
</BODY>
</HTML>
这种文件最好解密,一看就明白,关键是unescape()函数起了还原源代码的作用。要想看到加密前的代码是什么样子,可以用下面的办法:
<HTML><SCRIPT LANGUAGE="Javascript">
var Words ="%3Chtml%3E%3Cbody%20bgcolor%3D%22red%22%3E%3Cp%3E%u8FD9%u662F%u4F8B%u5B50%uFF01%uFF01%uFF1A%uFF09%3C/p%3E%3C/body%3E%3C/html%3E"
var NewWords
NewWords = unescape(Words)
NewWords=NewWords.toString()
function password(){
document.pw.txtpw.value=NewWords
}
</SCRIPT>
<BODY>
<form name=pw>
<input type=button onclick="password()" value="解密">
<br>
<textarea name="txtpw" cols="100" rows="100"></textarea>
</form>
</BODY>
</HTML>
方法二:
有一个软件叫HTMLEncrypt.exe,它就是把源代码进行加密的软件,这个软件的加密的原理是把字符转换。下面的例子是一个分帧的页面:
<html><head><script>
function Carbosoft( s ) { var sRet="" for(j=0 j< s.length j++ ){ var n= s.charCodeAt(j) if (n>=8364) {n = 128} sRet += String.fromCharCode( n - 3 ) } return( sRet ) }
var sJsCmds ="" +
"?kwpoA?khdgA?phwd#kwws0htxly@%Frqwhqw0W|sh%#frqwhqw@%wh{w2kwpo>#fkduvhw@lvr08<04%A?wlwohAZHOFRPH?2wlwohA?phwd#qdph@%JHQHUDWRU%#frqwhqw@%Plfurvriw#IurqwSdjh#613%A?phwd#qdph@%Plfurvriw#Wkhph%#frqwhqw@%qrqh/#ghidxow%A?phwd#qdph@%Plfurvriw#Erughu%#frqwhqw@%qrqh/#ghidxow%A?2khdgA?iudphvhw#erughu@%3%#iudpherughu@%3%#urzv@%-/93%A##?iudph#qdph@%pdlq%#vuf@%xs1kwp%#vfuroolqj@%dxwr%A##?iudph#qdph@%rqolqh%#vuf@%grzq1kwp%#vfuroolqj@%qr%#qruhvl}h#wdujhw@%beodqn%A##?qriudphvA##?erg|A##?sAWklv#sdjh#xvhv#iudphv/#exw#|rxu#eurzvhu#grhvq*w#vxssruw#wkhp1#?2sA##?2erg|A##?2qriudphvA?2iudphvhwA?2kwpoA?irqw#froru@%&33333%A?s#doljq@%fhqwhu%A?vpdooA?irqw#idfh@%Wdkrpd%AWklv#iloh#zdv#hqfu|swhg#xvlqj#dq#xquhjlvwhuhg#yhuvlrq#ri#?d#kuhi@%kwws=22fduer{1wkhgqv1qhw2kwpohqfu|sw1kwp%AKWPO#Hqfu|sw#y413?2dA1?2irqwA?2vpdooA?2sA" +
""
var s= Carbosoft( sJsCmds)
document.write (s)
</script>
</head><body></body></html>
从上面可以看出,浏览器解释这写代码前,进行了还原,从而可以得到破解的方法如下:
<script>
function Carbosoft( s ) { var sRet="" for(j=0 j< s.length j++ ){ var n= s.charCodeAt(j) if (n>=8364) {n = 128} sRet += String.fromCharCode( n - 3 ) } return( sRet ) }
var sJsCmds ="" +
"?kwpoA?khdgA?phwd#kwws0htxly@%Frqwhqw0W|sh%#frqwhqw@%wh{w2kwpo>#fkduvhw@lvr08<04%A?wlwohAZHOFRPH?2wlwohA?phwd#qdph@%JHQHUDWRU%#frqwhqw@%Plfurvriw#IurqwSdjh#613%A?phwd#qdph@%Plfurvriw#Wkhph%#frqwhqw@%qrqh/#ghidxow%A?phwd#qdph@%Plfurvriw#Erughu%#frqwhqw@%qrqh/#ghidxow%A?2khdgA?iudphvhw#erughu@%3%#iudpherughu@%3%#urzv@%-/93%A##?iudph#qdph@%pdlq%#vuf@%xs1kwp%#vfuroolqj@%dxwr%A##?iudph#qdph@%rqolqh%#vuf@%grzq1kwp%#vfuroolqj@%qr%#qruhvl}h#wdujhw@%beodqn%A##?qriudphvA##?erg|A##?sAWklv#sdjh#xvhv#iudphv/#exw#|rxu#eurzvhu#grhvq*w#vxssruw#wkhp1#?2sA##?2erg|A##?2qriudphvA?2iudphvhwA?2kwpoA?irqw#froru@%&33333%A?s#doljq@%fhqwhu%A?vpdooA?irqw#idfh@%Wdkrpd%AWklv#iloh#zdv#hqfu|swhg#xvlqj#dq#xquhjlvwhuhg#yhuvlrq#ri#?d#kuhi@%kwws=22fduer{1wkhgqv1qhw2kwpohqfu|sw1kwp%AKWPO#Hqfu|sw#y413?2dA1?2irqwA?2vpdooA?2sA" +
""
var s= Carbosoft( sJsCmds)
</script>
<form name=qq>
<textarea name=ww cols=100 rows=10></textarea>
<input onclick='ww.value=s' type=button value="解密">
</form>
方法三:
有一种加密方法是每行单独加密,还原起来比较复杂。看一个加密过的原文:
<HTML>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
function Decode() {
d("FrfmnD")d("FruyvDFgwhqjfWnyeseysuEXpydy%whqjf~J~XWghwEXfkjJpgXDFIgwhqjfD")d("FmufyWrffjKuieqdEX?klfulfK$ajuXWwklfulfEXfubfIrfmnGWwryhgufEsx}{~}XD")d("FfqfnuDejFIfqfnuD")d("FIruyvD")d("FxkvaD")d("FIxkvaD")d("FIrfmnD")d("W")return 0}
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
function d (enc) {document.write(codeIt(key,enc))}
var key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!\"\ \|#$%&\'()*+,-.\/:<=>?@[\\]^_\t\`{}~\n"function codeIt (mC, eS) {var wTG, mcH = mC.length / 2, nS = "", dvfor (var x = 0 x < eS.length x++) { wTG = mC.indexOf(eS.charAt(x))if (wTG > mcH) {dv = wTG - mcH nS = nS + mC.charAt(48 - dv)}else {dv = mcH - wTGnS = nS + mC.charAt(48 + dv)}}return nS}
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
Decode()
</SCRIPT>
</BODY>
</HTML>
还原的时候,也必须每行单独解密,用下面的方法可以看到源代码:
<HTML>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
function Decode() {
d("FrfmnD")d("FruyvDFgwhqjfWnyeseysuEXpydy%whqjf~J~XWghwEXfkjJpgXDFIgwhqjfD")d("FmufyWrffjKuieqdEX?klfulfK$ajuXWwklfulfEXfubfIrfmnGWwryhgufEsx}{~}XD")d("FfqfnuDejFIfqfnuD")d("FIruyvD")d("FxkvaD")d("FIxkvaD")d("FIrfmnD")d("W")return 0}
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
function d (enc) {alert(codeIt(key,enc))}
var key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!\"\ \|#$%&\'()*+,-.\/:<=>?@[\\]^_\t\`{}~\n"function codeIt (mC, eS) {var wTG, mcH = mC.length / 2, nS = "", dvfor (var x = 0 x < eS.length x++) { wTG = mC.indexOf(eS.charAt(x))if (wTG > mcH) {dv = wTG - mcH nS = nS + mC.charAt(48 - dv)}else {dv = mcH - wTGnS = nS + mC.charAt(48 + dv)}}return nS}
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
Decode()
</SCRIPT>
</BODY>
</HTML>
哈哈!!:=)是不是很精彩!!
加密在我们前端的开发中也是经常遇见的。本文只把我们常用的加密方法进行总结。不去纠结加密的具体实现方式(密码学,太庞大了)。
常见的加密算法基本分为这几类,
RSA加密:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。(这才是正经的加密算法)
非对称加密算法:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法
DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
AES这个标准用来替代原先的DES
DES/AES我们合并在一起介绍其用法和特点
Base64是一种用64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密算法。只是看上去像是加密而已(吓唬人)。
首先你的加密后的代码有误,无法执行,应将return(c35?String.fromCharCode(c+29):
修改为return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):
c和35之间的部分你没复制出来
这种加密的算法的解密方法很简单
<html><body>
<div id="test"></div>
<script type="text/javascript">
document.getElementById('test').innerHTML = 将需要破解的代码全部复制过来,注意你原来的代码不对,请通过替换先将上面说的那个错误改正
</script>
</body>
</html>
将上面的代码保存成html文件,打开此文件即可看到加密前的内容,由于你的问题解密后是广告语,所以不在此处给出,自己试一下