去什么网站找做电影的素材,做网站怎么备份数据,印度做网站,营销型企业网站优化的作用前端加密算法
一、base64加解密算法 简介#xff1a;Base64算法使用64个字符#xff08;A-Z、a-z、0-9、、/#xff09;来表示二进制数据的64种可能性#xff0c;将每3个字节的数据编码为4个可打印字符。如果字节数不是3的倍数#xff0c;将会进行填充。 优点#xff1…前端加密算法
一、base64加解密算法 简介Base64算法使用64个字符A-Z、a-z、0-9、、/来表示二进制数据的64种可能性将每3个字节的数据编码为4个可打印字符。如果字节数不是3的倍数将会进行填充。 优点 可打印字符Base64编码后的数据只包含可打印字符不会出现乱码或无法传输的情况。广泛支持Base64被广泛支持于各种编程语言和网络协议中可以方便地应用于各种场景。简单易用Base64的编码和解码很简单只需要少量的代码即可完成。 缺点 数据膨胀Base64编码后的数据通常比原始数据要大约1/3左右这意味着在传输大量数据时会增加传输的时间和带宽消耗。不加密Base64只是一种编码方式而不是加密算法它并不能提供数据的安全性。 简单实现 // 加密
let str_to_base64 window.btoa(str);
console.log(str_to_base64);
// 解密
let base64_to_str window.atob(str_to_base64)
console.log(base64_to_str);二、MD5加密算法不可逆 简介MD5Message Digest Algorithm 5是一种常用的加密算法用于对数据进行加密和解密。它是一种哈希函数能够将任意长度的数据转换为固定长度的摘要128位并且具有不可逆性。 优点 快速而高效MD5算法对数据进行加密和解密的速度很快特别适用于大规模数据处理。 简单易用MD5算法的实现相对简单使用方便。 不可逆性由于MD5算法是单向的哈希函数所以无法通过摘要反推出原始数据。 缺点 容易碰撞由于MD5摘要的长度固定而原始数据的长度可以是任意的因此可能会出现不同的数据生成相同的摘要即碰撞情况。 安全性较弱随着计算能力的提升现在已经有办法对MD5进行碰撞攻击即找到两个不同的数据生成相同的摘要。 不支持加密与解密操作MD5只能用于生成数据的摘要无法实现数据的加密和解密。 简单实现 const md5 require(./md5.min.js);
// 加密
let str_to_md5 md5(str);
console.log(str_to_md5);三、sha1加密算法不可逆 简介SHA-1算法是美国国家安全局NSA设计的一种安全哈希函数于1995年发布。它接受输入数据并通过一系列步骤生成唯一的哈希值该值具有较高的唯一性和不可逆性。SHA-1算法的设计目标是提供数据完整性校验和数字签名等应用。 优点 简单快速相对于其他哈希算法SHA-1算法具有较快的处理速度并且实现相对简单。 安全性SHA-1算法在设计时被认为是安全的其哈希值的冲突概率很低使其适用于许多安全应用。 缺点 强度不足由于技术进步和计算能力提升SHA-1算法已经不再被认为是安全的。已经发现了多个针对SHA-1哈希碰撞的攻击方法。 安全性退化由于现代计算机能力的提高攻击者可以使用更强大的硬件和算法来更快地计算SHA-1哈希碰撞。 不可逆性SHA-1算法是一种单向散列函数即无法从哈希值恢复原始数据。这在某些场景下可能是一个缺点。 简单实现 const sha1 require(./sha1.min.js);
// 加密
let str_to_sha1 sha1(str);
console.log(str_to_sha1);四、escape unescape 编码/解码 简介escape 和 unescape 是 JavaScript 中提供的编码和解码函数用于处理特殊字符的转义和恢复。它们的作用是将字符串中的特殊字符转换为编码表示以便在不同的上下文中进行安全传输或存储并且可以再次解码以恢复原始字符串。 优点 简单易用escape 和 unescape 函数是 JavaScript 内置函数可以直接调用无需额外的库或依赖。 兼容性好这些函数在大多数主流浏览器中都得到支持能够在不同的平台和环境中正常工作。 跨语言支持由于 escape 和 unescape 是基于 Unicode 编码的所以在多种编程语言中都可以使用。 缺点 仅支持 ASCII 字符集escape 和 unescape 函数只能处理 ASCII 字符对于非 ASCII 字符如中文、日文等需要使用其他编码方式。 安全性问题尽管 escape 可以对特殊字符进行编码但它并不是一种安全的编码方式因为它并不能完全保护数据免受攻击。在处理用户输入时应该使用更安全的编码方式如 encodeURIComponent 或使用服务器端的编码方法。 不可逆性escape 和 unescape 是一种简单的编码解码方式它们是一对一的关系无法进行数据压缩或加密也无法恢复被修改的编码结果。 简单实现 // 编码
let str_to_escape escape(str)
console.log(str_to_escape);
// 解码
let escape_to_str unescape(str_to_escape)
console.log(escape_to_str);五、AES/DES加解密算法 简介AES是一种高级加密标准用于保护敏感数据。它支持128位、192位和256位的密钥长度。AES使用替代/置换网络进行加密包括四种不同的运算字节替代、行移位、列混淆和轮密钥加。由于AES使用的操作通常是高效的因此它比DES更安全且更快。 DES是最早广泛使用的对称加密算法之一。它使用56位的密钥并将数据分成64位的块进行加密。DES采用迭代的结构重复16轮加密过程。每轮使用不同的子密钥对数据块进行变换。然而由于DES密钥长度较短因此易受到暴力破解和密码分析的攻击。 AES 的优点 更高的安全性AES采用更长的密钥长度128位、192位或256位提供更高的安全性。 快速加密/解密速度由于AES使用的操作较为简单且高效在相同硬件上与DES相比AES可以提供更快的加密和解密速度。 灵活性AES支持不同的密钥长度可以根据安全需求进行调整。 AES 的缺点 硬件实现的复杂性相较于DES实现AES算法所需的硬件更为复杂这可能导致一些应用的性能下降。 密钥管理由于AES支持多种密钥长度对密钥的管理可能会更加复杂。 DES 的优点 简单DES的算法较为简单易于实现和使用。 兼容性由于DES已经被广泛采用并成为密码学标准在一些遗留系统中仍然使用。 DES 的缺点 安全性较低由于DES密钥长度较短易受到暴力破解和密码分析的攻击。 过时的技术DES的密钥长度和算法设计已经过时不再被推荐用于保护敏感数据。 简单实现 const CryptoJS require(./crypto-js-3.1.2/package) // CryptoJS中还包含其他各类加密算法
const aseKey outmanAK // 秘钥必须为8/16/32位
//加密
var str_to_aes CryptoJS.AES.encrypt(str, CryptoJS.enc.Utf8.parse(aseKey), {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7
}).toString();
console.log(str_to_aes);
//解密
var aes_to_des CryptoJS.AES.decrypt(str_to_aes, CryptoJS.enc.Utf8.parse(aseKey), {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8);
console.log(aes_to_des);