开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 703|回复: 5
收起左侧

[完成] 翻译java代码

 关闭 [复制链接]
结帖率:74% (23/31)
发表于 2021-1-24 23:34:44 | 显示全部楼层 |阅读模式   四川省南充市
200精币
public static final char[] f8461a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();

    public static String a(byte[] bArr) {
        int length = bArr.length;
        StringBuffer stringBuffer = new StringBuffer((bArr.length * 3) / 2);
        int i2 = length - 3;
        int i3 = 0;
        loop0:
        while (true) {
            int i4 = 0;
            while (i3 <= i2) {
                int i5 = ((bArr[i3] & 255) << 16) | ((bArr[i3 + 1] & 255) << 8) | (bArr[i3 + 2] & 255);
                stringBuffer.append(f8461a[(i5 >> 18) & 63]);
                stringBuffer.append(f8461a[(i5 >> 12) & 63]);
                stringBuffer.append(f8461a[(i5 >> 6) & 63]);
                stringBuffer.append(f8461a[i5 & 63]);
                i3 += 3;
                int i6 = i4 + 1;
                if (i4 >= 14) {
                    stringBuffer.append(" ");
                } else {
                    i4 = i6;
                }
            }
            break loop0;
        }
        int i7 = 0 + length;
        if (i3 == i7 - 2) {
            int i8 = ((bArr[i3 + 1] & 255) << 8) | ((bArr[i3] & 255) << 16);
            stringBuffer.append(f8461a[(i8 >> 18) & 63]);
            stringBuffer.append(f8461a[(i8 >> 12) & 63]);
            stringBuffer.append(f8461a[(i8 >> 6) & 63]);
            stringBuffer.append("=");
        } else if (i3 == i7 - 1) {
            int i9 = (bArr[i3] & 255) << 16;
            stringBuffer.append(f8461a[(i9 >> 18) & 63]);
            stringBuffer.append(f8461a[(i9 >> 12) & 63]);
            stringBuffer.append("==");
        }
        return stringBuffer.toString();
    }



咋翻译成js

最佳答案

查看完整内容

就BASE64编码

结帖率:100% (34/34)

签到天数: 2 天

发表于 2021-1-24 23:34:45 | 显示全部楼层   江苏省泰州市
就BASE64编码

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 29 天

发表于 2021-1-24 23:47:07 | 显示全部楼层   福建省厦门市
精易模块:
编码_BASE64编码 ()
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 29 天

发表于 2021-1-24 23:48:18 | 显示全部楼层   福建省厦门市
  1. var CryptoJS = CryptoJS || (function (Math, undefined) {
  2.     var C = {};
  3.     var C_lib = C.lib = {};
  4.     var Base = C_lib.Base = (function () {
  5.         function F() {};
  6.         return {
  7.             extend: function (overrides) {
  8.                 F.prototype = this;
  9.                 var subtype = new F();
  10.                 if (overrides) {
  11.                     subtype.mixIn(overrides);
  12.                 }
  13.                 if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {
  14.                     subtype.init = function () {
  15.                         subtype.$super.init.apply(this, arguments);
  16.                     };
  17.                 }
  18.                 subtype.init.prototype = subtype;
  19.                 subtype.$super = this;
  20.                 return subtype;
  21.             }, create: function () {
  22.                 var instance = this.extend();
  23.                 instance.init.apply(instance, arguments);
  24.                 return instance;
  25.             }, init: function () {}, mixIn: function (properties) {
  26.                 for (var propertyName in properties) {
  27.                     if (properties.hasOwnProperty(propertyName)) {
  28.                         this[propertyName] = properties[propertyName];
  29.                     }
  30.                 }
  31.                 if (properties.hasOwnProperty('toString')) {
  32.                     this.toString = properties.toString;
  33.                 }
  34.             }, clone: function () {
  35.                 return this.init.prototype.extend(this);
  36.             }
  37.         };
  38.     }());
  39.     var WordArray = C_lib.WordArray = Base.extend({
  40.         init: function (words, sigBytes) {
  41.             words = this.words = words || [];
  42.             if (sigBytes != undefined) {
  43.                 this.sigBytes = sigBytes;
  44.             } else {
  45.                 this.sigBytes = words.length * 4;
  46.             }
  47.         }, toString: function (encoder) {
  48.             return (encoder || Hex).stringify(this);
  49.         }, concat: function (wordArray) {
  50.             var thisWords = this.words;
  51.             var thatWords = wordArray.words;
  52.             var thisSigBytes = this.sigBytes;
  53.             var thatSigBytes = wordArray.sigBytes;
  54.             this.clamp();
  55.             if (thisSigBytes % 4) {
  56.                 for (var i = 0; i < thatSigBytes; i++) {
  57.                     var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
  58.                     thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);
  59.                 }
  60.             } else if (thatWords.length > 0xffff) {
  61.                 for (var i = 0; i < thatSigBytes; i += 4) {
  62.                     thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];
  63.                 }
  64.             } else {
  65.                 thisWords.push.apply(thisWords, thatWords);
  66.             }
  67.             this.sigBytes += thatSigBytes;
  68.             return this;
  69.         }, clamp: function () {
  70.             var words = this.words;
  71.             var sigBytes = this.sigBytes;
  72.             words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);
  73.             words.length = Math.ceil(sigBytes / 4);
  74.         }, clone: function () {
  75.             var clone = Base.clone.call(this);
  76.             clone.words = this.words.slice(0);
  77.             return clone;
  78.         }, random: function (nBytes) {
  79.             var words = [];
  80.             var r = (function (m_w) {
  81.                 var m_w = m_w;
  82.                 var m_z = 0x3ade68b1;
  83.                 var mask = 0xffffffff;
  84.                 return function () {
  85.                     m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;
  86.                     m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;
  87.                     var result = ((m_z << 0x10) + m_w) & mask;
  88.                     result /= 0x100000000;
  89.                     result += 0.5;
  90.                     return result * (Math.random() > .5 ? 1 : -1);
  91.                 }
  92.             });
  93.             for (var i = 0, rcache; i < nBytes; i += 4) {
  94.                 var _r = r((rcache || Math.random()) * 0x100000000);
  95.                 rcache = _r() * 0x3ade67b7;
  96.                 words.push((_r() * 0x100000000) | 0);
  97.             }
  98.             return new WordArray.init(words, nBytes);
  99.         }
  100.     });
  101.     var C_enc = C.enc = {};
  102.     var Hex = C_enc.Hex = {
  103.         stringify: function (wordArray) {
  104.             var words = wordArray.words;
  105.             var sigBytes = wordArray.sigBytes;
  106.             var hexChars = [];
  107.             for (var i = 0; i < sigBytes; i++) {
  108.                 var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
  109.                 hexChars.push((bite >>> 4).toString(16));
  110.                 hexChars.push((bite & 0x0f).toString(16));
  111.             }
  112.             return hexChars.join('');
  113.         }, parse: function (hexStr) {
  114.             var hexStrLength = hexStr.length;
  115.             var words = [];
  116.             for (var i = 0; i < hexStrLength; i += 2) {
  117.                 words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);
  118.             }
  119.             return new WordArray.init(words, hexStrLength / 2);
  120.         }
  121.     };
  122.     var Latin1 = C_enc.Latin1 = {
  123.         stringify: function (wordArray) {
  124.             var words = wordArray.words;
  125.             var sigBytes = wordArray.sigBytes;
  126.             var latin1Chars = [];
  127.             for (var i = 0; i < sigBytes; i++) {
  128.                 var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
  129.                 latin1Chars.push(String.fromCharCode(bite));
  130.             }
  131.             return latin1Chars.join('');
  132.         }, parse: function (latin1Str) {
  133.             var latin1StrLength = latin1Str.length;
  134.             var words = [];
  135.             for (var i = 0; i < latin1StrLength; i++) {
  136.                 words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
  137.             }
  138.             return new WordArray.init(words, latin1StrLength);
  139.         }
  140.     };
  141.     var Utf8 = C_enc.Utf8 = {
  142.         stringify: function (wordArray) {
  143.             try {
  144.                 return decodeURIComponent(escape(Latin1.stringify(wordArray)));
  145.             } catch (e) {
  146.                 throw new Error('Malformed UTF-8 data');
  147.             }
  148.         }, parse: function (utf8Str) {
  149.             return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
  150.         }
  151.     };
  152.     var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
  153.         reset: function () {
  154.             this._data = new WordArray.init();
  155.             this._nDataBytes = 0;
  156.         }, _append: function (data) {
  157.             if (typeof data == 'string') {
  158.                 data = Utf8.parse(data);
  159.             }
  160.             this._data.concat(data);
  161.             this._nDataBytes += data.sigBytes;
  162.         }, _process: function (doFlush) {
  163.             var data = this._data;
  164.             var dataWords = data.words;
  165.             var dataSigBytes = data.sigBytes;
  166.             var blockSize = this.blockSize;
  167.             var blockSizeBytes = blockSize * 4;
  168.             var nBlocksReady = dataSigBytes / blockSizeBytes;
  169.             if (doFlush) {
  170.                 nBlocksReady = Math.ceil(nBlocksReady);
  171.             } else {
  172.                 nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);
  173.             }
  174.             var nWordsReady = nBlocksReady * blockSize;
  175.             var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);
  176.             if (nWordsReady) {
  177.                 for (var offset = 0; offset < nWordsReady; offset += blockSize) {
  178.                     this._doProcessBlock(dataWords, offset);
  179.                 }
  180.                 var processedWords = dataWords.splice(0, nWordsReady);
  181.                 data.sigBytes -= nBytesReady;
  182.             }
  183.             return new WordArray.init(processedWords, nBytesReady);
  184.         }, clone: function () {
  185.             var clone = Base.clone.call(this);
  186.             clone._data = this._data.clone();
  187.             return clone;
  188.         }, _minBufferSize: 0
  189.     });
  190.     var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({
  191.         cfg: Base.extend(),
  192.         init: function (cfg) {
  193.             this.cfg = this.cfg.extend(cfg);
  194.             this.reset();
  195.         }, reset: function () {
  196.             BufferedBlockAlgorithm.reset.call(this);
  197.             this._doReset();
  198.         }, update: function (messageUpdate) {
  199.             this._append(messageUpdate);
  200.             this._process();
  201.             return this;
  202.         }, finalize: function (messageUpdate) {
  203.             if (messageUpdate) {
  204.                 this._append(messageUpdate);
  205.             }
  206.             var hash = this._doFinalize();
  207.             return hash;
  208.         }, blockSize: 512 / 32,
  209.         _createHelper: function (hasher) {
  210.             return function (message, cfg) {
  211.                 return new hasher.init(cfg).finalize(message);
  212.             };
  213.         }, _createHmacHelper: function (hasher) {
  214.             return function (message, key) {
  215.                 return new C_algo.HMAC.init(hasher, key).finalize(message);
  216.             };
  217.         }
  218.     });
  219.     var C_algo = C.algo = {};
  220.     return C;
  221. }(Math));

  222. (function () {
  223.     var C = CryptoJS;
  224.     var C_lib = C.lib;
  225.     var WordArray = C_lib.WordArray;
  226.     var C_enc = C.enc;
  227.     var Base64 = C_enc.Base64 = {
  228.         stringify: function (wordArray) {
  229.             var words = wordArray.words;
  230.             var sigBytes = wordArray.sigBytes;
  231.             var map = this._map;
  232.             wordArray.clamp();
  233.             var base64Chars = [];
  234.             for (var i = 0; i < sigBytes; i += 3) {
  235.                 var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
  236.                 var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
  237.                 var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
  238.                 var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
  239.                 for (var j = 0;
  240.                     (j < 4) && (i + j * 0.75 < sigBytes); j++) {
  241.                     base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
  242.                 }
  243.             }
  244.             var paddingChar = map.charAt(64);
  245.             if (paddingChar) {
  246.                 while (base64Chars.length % 4) {
  247.                     base64Chars.push(paddingChar);
  248.                 }
  249.             }
  250.             return base64Chars.join('');
  251.         }, parse: function (base64Str) {
  252.             var base64StrLength = base64Str.length;
  253.             var map = this._map;
  254.             var reverseMap = this._reverseMap;
  255.             if (!reverseMap) {
  256.                 reverseMap = this._reverseMap = [];
  257.                 for (var j = 0; j < map.length; j++) {
  258.                     reverseMap[map.charCodeAt(j)] = j;
  259.                 }
  260.             }
  261.             var paddingChar = map.charAt(64);
  262.             if (paddingChar) {
  263.                 var paddingIndex = base64Str.indexOf(paddingChar);
  264.                 if (paddingIndex !== -1) {
  265.                     base64StrLength = paddingIndex;
  266.                 }
  267.             }
  268.             return parseLoop(base64Str, base64StrLength, reverseMap);
  269.         }, _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
  270.     };
  271.     function parseLoop(base64Str, base64StrLength, reverseMap) {
  272.         var words = [];
  273.         var nBytes = 0;
  274.         for (var i = 0; i < base64StrLength; i++) {
  275.             if (i % 4) {
  276.                 var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
  277.                 var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
  278.                 words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);
  279.                 nBytes++;
  280.             }
  281.         }
  282.         return WordArray.create(words, nBytes);
  283.     }
  284. }());

  285. function B64_Encrypt(word) {
  286.     var src = CryptoJS.enc.Utf8.parse(word);
  287.     return CryptoJS.enc.Base64.stringify(src);
  288. }

  289. function B64_Decrypt(word) {
  290.     var src = CryptoJS.enc.Base64.parse(word);
  291.     return CryptoJS.enc.Utf8.stringify(src);
  292. }
复制代码
回复

使用道具 举报

签到天数: 7 天

发表于 2021-1-24 23:54:14 | 显示全部楼层   浙江省金华市
var str = "RUNOOB";
var enc = window.btoa(str);
var dec = window.atob(enc);

var res = "BASE64编码后字符串为: " + enc + "<br>" + "BASE64解码后字符串为: " + dec;
回复

使用道具 举报

结帖率:100% (1/1)
发表于 2021-1-24 23:54:23 | 显示全部楼层   广西壮族自治区南宁市
  1. var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";  

  2.   
  3. function base64encode(str) {  
  4.     var out, i, len;  
  5.     var c1, c2, c3;  
  6.   
  7.     len = str.length;  
  8.     i = 0;  
  9.     out = "";  
  10.     while(i < len) {  
  11.     c1 = str.charCodeAt(i++) & 0xff;  
  12.     if(i == len)  
  13.     {  
  14.         out += base64EncodeChars.charAt(c1 >> 2);  
  15.         out += base64EncodeChars.charAt((c1 & 0x3) << 4);  
  16.         out += "==";  
  17.         break;  
  18.     }  
  19.     c2 = str.charCodeAt(i++);  
  20.     if(i == len)  
  21.     {  
  22.         out += base64EncodeChars.charAt(c1 >> 2);  
  23.         out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));  
  24.         out += base64EncodeChars.charAt((c2 & 0xF) << 2);  
  25.         out += "=";  
  26.         break;  
  27.     }  
  28.     c3 = str.charCodeAt(i++);  
  29.     out += base64EncodeChars.charAt(c1 >> 2);  
  30.     out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));  
  31.     out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));  
  32.     out += base64EncodeChars.charAt(c3 & 0x3F);  
  33.     }  
  34.     return out;  
  35. }  

复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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