apicloud apicloud

注册
查看: 551|回复: 7

[案例源码] xxtea模块开源

版主

UID:83211

主题:
153
帖子:
7930
云币:
60774

APICloud粉丝模块开发者一周年你吃屎!女朋友SB侠APICloud大会专属勋章捣蛋鬼

[案例源码] xxtea模块开源

551 7 | 发表于 2019-4-24 14:56:26 |阅读模式 | |
XXTEA简介
TEA(Tiny Encryption Algorithm)是一种小型的对称加密解密算法,支持128位密码,与BlowFish一样TEA每次只能加密/解密8字节数据。TEA特点是速度快、效率高,实现也非常简单。由于针对TEA的攻击不断出现,所以TEA也发展出几个版本,分别是XTEA、Block TEA和XXTEA。
xxtea 模块概述
本模块仅封装了XXTEA的加密和解密。
  1. <!DOCTYPE html>
  2. <html>

  3. <head>
  4.     <title>Module Develop</title>
  5.     <meta charset="utf-8">
  6.     <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
  7.     <style type="text/css">
  8.         html,
  9.         body {
  10.             height: 100%
  11.         }

  12.         body {
  13.             background-color: #fff;
  14.             margin: 0;
  15.         }

  16.         #wrap {
  17.             height: 100%;
  18.             position: relative;
  19.         }

  20.         #header {
  21.             padding-top: 20px;
  22.             background-color: #5082c2;
  23.             height: 44px;
  24.             position: relative;
  25.         }

  26.         #header h1 {
  27.             font-size: 20px;
  28.             height: 44px;
  29.             line-height: 44px;
  30.             margin: 0em;
  31.             color: #fff;
  32.             margin-left: 100px;
  33.             margin-right: 100px;
  34.             text-align: center;
  35.         }

  36.         #main {
  37.             display: -webkit-box;
  38.             -webkit-box-orient: vertical;
  39.             -webkit-box-pack: center;
  40.         }

  41.         a.button {
  42.             display: -webkit-box;
  43.             -webkit-box-orient: vertical;
  44.             -webkit-box-pack: center;
  45.             -webkit-box-align: center;
  46.             height: 32px;
  47.             margin: 8px;
  48.             background-color: rgba(240, 240, 240, 1.0);
  49.             border-color: rgba(220, 220, 220, 1.0);
  50.             border-width: 2px;
  51.             border-style: solid;
  52.         }

  53.         a.active {
  54.             background-color: rgba(240, 240, 240, 0.7);
  55.         }
  56.     </style>
  57. </head>

  58. <body>
  59.     <div id="wrap">
  60.         <div id="main">
  61.             <a class="button" tapmode="active" onclick="setKey()">密钥(异步)</a>
  62.             <a class="button" tapmode="active" onclick="encrypt()">加密(异步)</a>
  63.             <a class="button" tapmode="active" onclick="decrypt()">解密(异步)</a>

  64.             <a class="button" tapmode="active" onclick="setKeySync()">密钥(同步)</a>
  65.             <a class="button" tapmode="active" onclick="encryptSync()">加密(同步)</a>
  66.             <a class="button" tapmode="active" onclick="decryptSync()">解密(同步)</a>
  67.         </div>
  68.     </div>
  69. </body>
  70. <script type="text/javascript">
  71.     var demo = null;
  72.     apiready = function() {
  73.         demo = api.require('xxtea');
  74.         if (!demo) {
  75.             alert("请添加模块后编译");
  76.             return;
  77.         }
  78.     }


  79.     function setKey() {
  80.         demo.setKey({
  81.             key: '1212nknsdfs'
  82.         }, function(ret, err) {
  83.             alert(JSON.stringify(ret) + " " + JSON.stringify(err));
  84.         });
  85.     }

  86.     var temp;

  87.     function encrypt() {
  88.         demo.encrypt({
  89.             data: 'wwwdkdaaeee多得多wwwdkdaaeeewwwdkdaaeeewwwdkdaaeeewwwdkdaaeeewwwdkdaaeeewwwdkdaaeeewwwdkdaaeeewwwdkdaaeee'
  90.         }, function(ret, err) {
  91.             alert(JSON.stringify(ret) + " " + JSON.stringify(err));
  92.             temp = ret.result;
  93.         });
  94.     }

  95.     function decrypt() {
  96.         demo.decrypt({
  97.             data: temp
  98.         }, function(ret, err) {
  99.             alert(JSON.stringify(ret) + " " + JSON.stringify(err));
  100.         });
  101.     }


  102.     function setKeySync() {
  103.         var ret = demo.setKeySync({
  104.             key: '1212nknsdfs'
  105.         });
  106.         alert(ret);
  107.     }


  108.     function encryptSync() {
  109.         temp = demo.encryptSync({
  110.             data: 'wwwdkdaaeee多得多wwwdkdaaeeewwwdkdaaeeewwwdkdaaeeewwwdkdaaeeewwwdkdaaeeewwwdkdaaeeewwwdkdaaeeewwwdkdaaeee'
  111.         });

  112.         alert(temp);
  113.     }


  114.     function decryptSync() {
  115.         var ret = demo.decryptSync({
  116.             data: temp
  117.         });

  118.         alert(ret);
  119.     }
  120. </script>

  121. </html>
复制代码

模块开源地址:


版主

UID:546828

主题:
34
帖子:
4231
云币:
3018

圣诞节捣蛋鬼APICloud五岁啦

发表于 2019-4-24 15:44:50 |
感谢分享

版主

UID:83211

主题:
153
帖子:
7930
云币:
60774

APICloud粉丝模块开发者一周年你吃屎!女朋友SB侠APICloud大会专属勋章捣蛋鬼

 楼主| 发表于 2019-4-24 15:55:34 |

驾校小白

UID:774553

主题:
1
帖子:
30
云币:
84
发表于 2019-4-24 16:22:37 |
感谢分享

老司机

UID:673413

主题:
175
帖子:
12674
云币:
5646

圣诞节

发表于 2019-4-24 18:54:39 |
感谢分享

版主

UID:108295

主题:
85
帖子:
4799
云币:
1566

足球狗

发表于 2019-4-24 20:40:29 |

主题:
10
帖子:
39
云币:
33
发表于 2019-5-16 13:52:59 |
感谢分享。
之前还在想怎么和其他语言加解密不能互通呢。
看了源码才之后才知道,原来作者把密文又进行了一次16进制转换。

版主

UID:83211

主题:
153
帖子:
7930
云币:
60774

APICloud粉丝模块开发者一周年你吃屎!女朋友SB侠APICloud大会专属勋章捣蛋鬼

 楼主| 发表于 2019-5-16 14:46:57 |
en
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表