// base64加密开始 var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv"+ "wxyz0123456789+/" + "="; function encode64(input) { var output = ""; var chr1, chr2, chr3 = ""; var enc1, enc2, enc3, enc4 = ""; var i = 0; do { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); chr1 = chr2 = chr3 = ""; enc1 = enc2 = enc3 = enc4 = ""; } while (i < input.length); return output; }
时间: 2024-04-21 12:30:26 浏览: 11
这段代码是一个 JavaScript 函数,用来进行 base64 编码。它接受一个字符串作为输入,然后将其转换成 base64 编码后的字符串,并返回该字符串作为输出。在函数中,使用了一个包含 64 个字符的字符串作为 base64 编码表,然后对输入字符串进行一些位运算和字符拼接操作,最终得到 base64 编码后的字符串。
相关问题
/** * * Base64 encode / decode * http://www.webtoolkit.info/ * **/ var Base64 = { // private property _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", // public method for encoding encode : function (input, binary) { binary = (binary != null) ? binary : false; var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; if (!binary) { input = Base64._utf8_encode(input); } while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); } return output; }, // public method for decoding decode : function (input, binary) { binary = (binary != null) ? binary : false; var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } if (!binary) { output = Base64._utf8_decode(output); } return output; }, // private method for UTF-8 encoding _utf8_encode : function (string) { string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }, // private method for UTF-8 decoding _utf8_decode : function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while ( i < utftext.length ) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } }
这段代码是一个用于Base64编码和解码的工具类。它提供了两个方法:encode和decode。encode方法用于将输入的字符串进行Base64编码,decode方法用于将Base64编码的字符串解码为原始字符串。
在encode方法中,首先判断是否需要将输入字符串转换为UTF-8编码。然后,通过循环遍历输入字符串的每一个字符,将字符转换为对应的ASCII码,并根据Base64编码规则进行编码。最后,将编码后的字符拼接到输出字符串中,并返回最终的编码结果。
在decode方法中,首先移除输入字符串中的非Base64字符。然后,通过循环遍历输入字符串的每四个字符,根据Base64解码规则将字符转换为对应的ASCII码,并将解码后的字符拼接到输出字符串中。最后,如果不是二进制输出,将输出字符串转换为UTF-8编码,并返回最终的解码结果。
此外,还有两个私有方法:_utf8_encode和_utf8_decode用于将字符串转换为UTF-8编码和从UTF-8编码转换回原始字符串。
这个工具类可以在前端或后端使用,用于处理Base64编码和解码的需求。
vue2不可逆加密js代码
要在Vue2中实现不可逆加密的功能,你可以使用crypto-js这个第三方库来实现。下面是一个示例的代码:
首先,你需要安装crypto-js依赖。你可以使用npm或cnpm来进行安装,命令如下:
npm install crypto-js 或 cnpm install crypto-js
其次,你需要创建一个js文件,并将下面的代码复制到文件中:
```javascript
// 导入crypto-js库
import CryptoJS from 'crypto-js'
export default {
// 加密方法
set(word, keyStr) {
keyStr = keyStr || 'abcdef0123456789' // 16位的密钥,自己定义,和下面的密钥要相同
var srcs = CryptoJS.enc.Utf8.parse(word) // 将字符串转换成WordArray,用于加密
var key = CryptoJS.enc.Utf8.parse(keyStr) // 将字符串转换成WordArray,用于加密的密钥
// 使用AES算法进行加密
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB, // 加密模式为ECB模式
padding: CryptoJS.pad.Pkcs7 // 填充方式为Pkcs7
})
return encrypted.toString() // 将加密后的结果转换为字符串并返回
},
// 解密方法
get(word, keyStr) {
keyStr = keyStr || 'abcdef0123456789' // 16位的密钥,自己定义,和上面的密钥要相同
var key = CryptoJS.enc.Utf8.parse(keyStr) // 将字符串转换成WordArray,用于解密
// 使用AES算法进行解密
var decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB, // 解密模式为ECB模式
padding: CryptoJS.pad.Pkcs7 // 填充方式为Pkcs7
})
return CryptoJS.enc.Utf8.stringify(decrypt).toString() // 将解密后的结果转换为字符串并返回
}
}
```
最后,你可以在需要使用加密功能的地方调用这些方法。例如:
```javascript
import Crypto from 'path/to/crypto.js'
// 加密
var encryptedText = Crypto.set('hello', 'myKey')
// 解密
var decryptedText = Crypto.get(encryptedText, 'myKey')
```
这段代码会将"hello"进行加密,并将加密后的结果保存在encryptedText变量中。然后,将encryptedText作为参数传给解密方法,再传入相同的密钥"myKey",即可得到解密后的文本,保存在decryptedText变量中。
希望这个例子对你有帮助。如果你有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [vue中使用crypto-js实现加密解密](https://blog.csdn.net/weixin_47424753/article/details/126331686)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]