1. 200944 周六 22:18
  2.  
  3. <HTML>
  4. <HEAD>
  5. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  6.  
  7. <TITLE>文本加密</TITLE>
  8.  
  9. <SCRIPT LANGUAGE="JavaScript">
  10. function TEAencrypt(plaintext, password)
  11. {
  12. if (plaintext.length == 0) return(''); // nothing to encrypt
  13. // 'escape' plaintext so chars outside ISO-8859-1 work in single-byte packing, but keep
  14. // spaces as spaces (not '%20') so encrypted text doesn't grow too long (quick & dirty)
  15. var asciitext = escape(plaintext).replace(/%20/g,' ');
  16. var v = strToLongs(asciitext); // convert string to array of longs
  17. if (v.length <= 1) v[1] = 0; // algorithm doesn't work for n<2 so fudge by adding a null
  18. var k = strToLongs(password.slice(0,16)); // simply convert first 16 chars of password as key
  19. var n = v.length;
  20.  
  21. var z = v[n-1], y = v[0], delta = 0x9E3779B9;
  22. var mx, e, q = Math.floor(6 + 52/n), sum = 0;
  23.  
  24. while (q-- > 0) { // 6 + 52/n operations gives between 6 & 32 mixes on each word
  25. sum += delta;
  26. e = sum>>>2 & 3;
  27. for (var p = 0; p < n; p++) {
  28. y = v[(p+1)%n];
  29. mx = (z>>>5 ^ y<<2) + (y>>>3 ^ z<<4) ^ (sum^y) + (k[p&3 ^ e] ^ z);
  30. z = v[p] += mx;
  31. }
  32. }
  33.  
  34. var ciphertext = longsToStr(v);
  35.  
  36. return escCtrlCh(ciphertext);
  37. }
  38.  
  39. //
  40. // TEAdecrypt: Use Corrected Block TEA to decrypt ciphertext using password
  41. //
  42. function TEAdecrypt(ciphertext, password)
  43. {
  44. if (ciphertext.length == 0) return('');
  45. var v = strToLongs(unescCtrlCh(ciphertext));
  46. var k = strToLongs(password.slice(0,16));
  47. var n = v.length;
  48.  
  49. var z = v[n-1], y = v[0], delta = 0x9E3779B9;
  50. var mx, e, q = Math.floor(6 + 52/n), sum = q*delta;
  51.  
  52. while (sum != 0) {
  53. e = sum>>>2 & 3;
  54. for (var p = n-1; p >= 0; p--) {
  55. z = v[p>0 ? p-1 : n-1];
  56. mx = (z>>>5 ^ y<<2) + (y>>>3 ^ z<<4) ^ (sum^y) + (k[p&3 ^ e] ^ z);
  57. y = v[p] -= mx;
  58. }
  59. sum -= delta;
  60. }
  61.  
  62. var plaintext = longsToStr(v);
  63.  
  64. // strip trailing null chars resulting from filling 4-char blocks:
  65. plaintext = plaintext.replace(/\0+$/,'');
  66.  
  67. return unescape(plaintext);
  68. }
  69.  
  70. // supporting functions
  71.  
  72. function strToLongs(s) { // convert string to array of longs, each containing 4 chars
  73. // note chars must be within ISO-8859-1 (with Unicode code-point < 256) to fit 4/long
  74. var l = new Array(Math.ceil(s.length/4));
  75. for (var i=0; i<l.length; i++) {
  76. // note little-endian encoding - endianness is irrelevant as long as
  77. // it is the same in longsToStr()
  78. l[i] = s.charCodeAt(i*4) + (s.charCodeAt(i*4+1)<<8) +
  79. (s.charCodeAt(i*4+2)<<16) + (s.charCodeAt(i*4+3)<<24);
  80. }
  81. return l; // note running off the end of the string generates nulls since
  82. } // bitwise operators treat NaN as 0
  83.  
  84. function longsToStr(l) { // convert array of longs back to string
  85. var a = new Array(l.length);
  86. for (var i=0; i<l.length; i++) {
  87. a[i] = String.fromCharCode(l[i] & 0xFF, l[i]>>>8 & 0xFF,
  88. l[i]>>>16 & 0xFF, l[i]>>>24 & 0xFF);
  89. }
  90. return a.join(''); // use Array.join() rather than repeated string appends for efficiency
  91. }
  92.  
  93. function escCtrlCh(str) { // escape control chars etc which might cause problems with encrypted texts
  94. return str.replace(/[\0\t\n\v\f\r\xa0'"!]/g, function(c) { return '!' + c.charCodeAt(0) + '!'; });
  95. }
  96.  
  97. function unescCtrlCh(str) { // unescape potentially problematic nulls and control characters
  98. return str.replace(/!\d\d?\d?!/g, function(c) { return String.fromCharCode(c.slice(1,-1)); });
  99. }
  100.  
  101. var Base64 = function(){}
  102. Base64.encodeChars =
  103. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  104. Base64.decodeChars = new Array( - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
  105. - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
  106. - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
  107. - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, 62, - 1, - 1, - 1,
  108. 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 1, - 1, - 1, - 1, - 1,
  109. - 1, - 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
  110. 19, 20, 21, 22, 23, 24, 25, - 1, - 1, - 1, - 1, - 1, - 1, 26, 27, 28,
  111. 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
  112. 48, 49, 50, 51, - 1, - 1, - 1, - 1, - 1);
  113.  
  114. Base64.encode = function(str)
  115. {
  116. var out, i, len;
  117. var c1, c2, c3;
  118.  
  119. len = str.length;
  120. i = 0;
  121. out = "";
  122. while (i < len)
  123. {
  124. c1 = str.charCodeAt(i++) & 0xff;
  125. if (i == len)
  126. {
  127. out += Base64.encodeChars.charAt(c1 >> 2);
  128. out += Base64.encodeChars.charAt((c1 & 0x3) << 4);
  129. out += "==";
  130. break;
  131. }
  132. c2 = str.charCodeAt(i++);
  133. if (i == len)
  134. {
  135. out += Base64.encodeChars.charAt(c1 >> 2);
  136. out += Base64.encodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0)
  137. >> 4));
  138. out += Base64.encodeChars.charAt((c2 & 0xF) << 2);
  139. out += "=";
  140. break;
  141. }
  142. c3 = str.charCodeAt(i++);
  143. out += Base64.encodeChars.charAt(c1 >> 2);
  144. out += Base64.encodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4))
  145. ;
  146. out += Base64.encodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6))
  147. ;
  148. out += Base64.encodeChars.charAt(c3 & 0x3F);
  149. }
  150. return out;
  151. }
  152.  
  153. Base64.decode = function(str)
  154. {
  155. var c1, c2, c3, c4;
  156. var i, len, out;
  157.  
  158. len = str.length;
  159. i = 0;
  160. out = "";
  161. while (i < len)
  162. {
  163. /* c1 */
  164. do
  165. {
  166. c1 = Base64.decodeChars[str.charCodeAt(i++) & 0xff];
  167. }
  168. while (i < len && c1 == - 1);
  169. if (c1 == - 1)
  170. break;
  171.  
  172. /* c2 */
  173. do
  174. {
  175. c2 = Base64.decodeChars[str.charCodeAt(i++) & 0xff];
  176. }
  177. while (i < len && c2 == - 1);
  178. if (c2 == - 1)
  179. break;
  180.  
  181. out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
  182.  
  183. /* c3 */
  184. do
  185. {
  186. c3 = str.charCodeAt(i++) & 0xff;
  187. if (c3 == 61)
  188. return out;
  189. c3 = Base64.decodeChars[c3];
  190. }
  191. while (i < len && c3 == - 1);
  192. if (c3 == - 1)
  193. break;
  194.  
  195. out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
  196.  
  197. /* c4 */
  198. do
  199. {
  200. c4 = str.charCodeAt(i++) & 0xff;
  201. if (c4 == 61)
  202. return out;
  203. c4 = Base64.decodeChars[c4];
  204. }
  205. while (i < len && c4 == - 1);
  206. if (c4 == - 1)
  207. break;
  208. out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
  209. }
  210. return out;
  211. }
  212.  
  213. Base64.utf16to8 = function(str)
  214. {
  215. var out, i, len, c;
  216.  
  217. out = "";
  218. len = str.length;
  219. for (i = 0; i < len; i++)
  220. {
  221. c = str.charCodeAt(i);
  222. if ((c >= 0x0001) && (c <= 0x007F))
  223. {
  224. out += str.charAt(i);
  225. }
  226. else if (c > 0x07FF)
  227. {
  228. out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
  229. out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
  230. out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
  231. }
  232. else
  233. {
  234. out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
  235. out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
  236. }
  237. }
  238. return out;
  239. }
  240.  
  241. Base64.utf8to16 = function(str)
  242. {
  243. var out, i, len, c;
  244. var char2, char3;
  245.  
  246. out = "";
  247. len = str.length;
  248. i = 0;
  249. while (i < len)
  250. {
  251. c = str.charCodeAt(i++);
  252. switch (c >> 4)
  253. {
  254. case 0:
  255. case 1:
  256. case 2:
  257. case 3:
  258. case 4:
  259. case 5:
  260. case 6:
  261. case 7:
  262. // 0xxxxxxx
  263. out += str.charAt(i - 1);
  264. break;
  265. case 12:
  266. case 13:
  267. // 110x xxxx 10xx xxxx
  268. char2 = str.charCodeAt(i++);
  269. out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
  270. break;
  271. case 14:
  272. // 1110 xxxx 10xx xxxx 10xx xxxx
  273. char2 = str.charCodeAt(i++);
  274. char3 = str.charCodeAt(i++);
  275. out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F)
  276. << 6) | ((char3 & 0x3F) << 0));
  277. break;
  278. }
  279. }
  280.  
  281. return out;
  282. }
  283.  
  284. function doSecure()
  285. {
  286. var str = TEAencrypt(document.getElementById("txtUnsecure").value, document.getElementById("txtPassw").value);
  287. document.getElementById("txtSecure").value = Base64.encode(Base64.utf16to8(str));
  288. }
  289.  
  290. function doUnsecure()
  291. {
  292. var str = Base64.utf8to16(Base64.decode(document.getElementById("txtSecure").value));
  293. document.getElementById("txtUnsecure").value = TEAdecrypt(str, document.getElementById("txtPassw").value);
  294.  
  295. }
  296. </script>
  297.  
  298. </HEAD>
  299. <BODY >
  300.  
  301. <center>
  302. <table border=1 width="571">
  303. <tr>
  304. <td>
  305. <form name=frmSecurity>
  306. <p><font color=#ff0000>密码:</font>
  307. <input type=password id=txtPassw size=20 value="">
  308. <table border=0>
  309. <tr>
  310. <p><font color=#0000ff>原文</font>
  311. </tr>
  312. <tr>
  313. <textarea rows=20 id=txtUnsecure cols=120 wrap=virtual>我是一个美女!</textarea>
  314. </tr>
  315. <tr align=center>
  316. <input type=button value=" 加密 "
  317. name=btnSecure onclick="doSecure()">
  318. <br>
  319. <input type=button value=" 解密 "
  320. name=btnUnsecure onclick="doUnsecure()">
  321. </tr>
  322. <tr>
  323. <p><font color=#0000ff>加密之后</font>
  324. </tr>
  325. <tr>
  326. <textarea rows=20 id=txtSecure cols=120 wrap=virtual></textarea></td>
  327. </tr>
  328. </table>
  329. </form>
  330. </td>
  331. </tr>
  332. </table>
  333. </center>
  334. </BODY></HTML>

加密html的更多相关文章

  1. 关于CryptoJS中md5加密以及aes加密的随笔

    最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学 ...

  2. “不给力啊,老湿!”:RSA加密与破解

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 加密和解密是自古就有技术了.经常看到侦探电影的桥段,勇敢又机智的主角,拿着一长串毫 ...

  3. .NET 对接JAVA 使用Modulus,Exponent RSA 加密

    最近有一个工作是需要把数据用RSA发送给Java 虽然一开始标准公钥 net和Java  RSA填充的一些算法不一样 但是后来这个坑也补的差不多了 具体可以参考 http://www.cnblogs. ...

  4. AES加密

    package com.edu.hpu; import java.math.BigInteger; import java.security.MessageDigest; import java.se ...

  5. Android数据加密之MD5加密

    前言: 项目中无论是密码的存储或者说判断文件是否是同一文件,都会用到MD5算法,今天来总结一下MD5加密算法. 什么是MD5加密? MD5英文全称“Message-Digest Algorithm 5 ...

  6. PHP的学习--RSA加密解密

    PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了. 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了. 密码没加 ...

  7. ASP.NET加密和解密数据库连接字符串

    大家知道,在应用程序中进行数据库操作需要连接字符串,而如果没有连接字符串,我们就无法在应用程序中完成检索数据,创建数据等一系列的数据库操作.当有人想要获取你程序中的数据库信息,他首先看到的可能会是We ...

  8. GPG终极指南(加密/签名)

    我们平时都听过非对称加密,公钥和私钥,签名验证,但这些证书都是怎么得到的呢?本篇文章会解答这些问题. 背景介绍 加密的一个简单但又实用的任务就是发送加密电子邮件.多年来,为电子邮件进行加密的标准一直是 ...

  9. RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密

    最近换了一份工作,工作了大概一个多月了吧.差不多得有两个月没有更新博客了吧.在新公司自己写了一个iOS的比较通用的可以架构一个中型应用的不算是框架的一个结构,并已经投入使用.哈哈 说说文章标题的相关的 ...

  10. C# salt+hash 加密

    一.先明确几个基本概念 1.伪随机数:pseudo-random number generators ,简称为:PRNGs,是计算机利用一定的算法来产生的.伪随机数并不是假随机 数,这里的" ...

随机推荐

  1. 及格率 不谢 cast(cast (sum(case when res>=60 then 1 else 0 end)*100/(count(1)*1.0) as float) as nvarchar)+'%' '及格率'

    --18.查询各科成绩最高分.最低分和平均分:--以如下形式显示:-- 课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率--及格为>=60,中等为:70-80,优良 ...

  2. Java—NumberFormat与DecimalFormat类

    1.NumberFormat表示数字的格式化类 NumberFormat表示数字的格式化类,即:可以按照本地的风格习惯进行数字的显示. No. 方法 类型 描述 1 public static Loc ...

  3. K - Ignatius and the Princess IV

    Description         "OK, you are not too bad, em... But you can never pass the next test." ...

  4. Sublime text3使用技巧及快捷键

    一.快速查找文件Crtl+P(Goto->Goto Anyghing) 在打开的搜索框中输入文件名按Enter键即可. 提示:1.支持文件夹+文件名的搜索,比如 "js/main.js ...

  5. 容器的深入研究(二)—Set与Map

    一.Set类的作用 二.Set类延生的四种形式 三.非基础类型如何使用Set的四种形式 四.Queue的使用 五.PriorityQueue的使用 六.Map的六种形式 七.HashMap散列码的实现 ...

  6. Kindeditor上传图片到七牛云存储插件(PHP版)

    由于工作需要,要使用第三方存储作为图床,发现七牛云挺不错,又可以免费使用10G的空间,决定先试试. 项目中使用的是Kindeditor作为网页编辑器的,七牛云的插件里没有现成的Kindeditor的插 ...

  7. BeanUtils包的学习

    BeanUtils支持八种基本数据类型(int double short char byte float boolean long)的反射,对于日期需要提前注册DateLocalConvert获取转换 ...

  8. 【Xamarin挖墙脚系列:开始使用Xamari4.0系列产品开发IOS】

    一直沉默在Xamarin3.0系列版本上,升级到4.0之后,感觉有些变化.还得适应下. 1 build.host  代理消失了,成了SSH客户端登录.所以,Mac设备需要打开运行远程登录. 2 在Wi ...

  9. STL中,迭代器的分类

    五类迭代器如下: 1.输入迭代器:只读,一次传递    为输入迭代器预定义实现只有istream_iterator和istreambuf_iterator,用于从一个输入流istream中读取.一个输 ...

  10. MAC上python环境搭建

    mac自带的有python,如果你需要查看版本,打开terminal输入以下命令: python --version 如果你需要安装新的python版本,有几种方法可以安装,一是去python官网下载 ...