首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js字符串加密解密

在JavaScript中,字符串加密和解密通常涉及到使用特定的加密算法来转换原始字符串为不可读的密文,以及将密文还原为原始字符串的过程。以下是一些基础概念、优势、类型、应用场景以及示例代码:

基础概念

  1. 加密:将原始数据(明文)通过加密算法转换为密文的过程。
  2. 解密:将密文通过相应的解密算法还原为原始数据的过程。
  3. 密钥:在加密和解密过程中使用的秘密参数,决定了加密的安全性。

优势

  • 数据保护:防止敏感信息泄露。
  • 身份验证:确保数据的来源和完整性。

类型

常见的加密类型包括对称加密和非对称加密。

  1. 对称加密:使用相同的密钥进行加密和解密,如AES、DES等。
  2. 非对称加密:使用一对密钥,一个用于加密,另一个用于解密,如RSA、ECC等。

应用场景

  • 用户密码存储
  • 数据传输安全
  • 敏感信息的存储

示例代码

以下是一个使用JavaScript的Crypto API进行AES对称加密和解密的示例:

代码语言:txt
复制
// 加密函数
async function encrypt(text, key) {
  const encoder = new TextEncoder();
  const encodedText = encoder.encode(text);
  const cryptoKey = await crypto.subtle.importKey(
    "raw",
    encoder.encode(key),
    { name: "AES-GCM" },
    false,
    ["encrypt"]
  );
  const iv = crypto.getRandomValues(new Uint8Array(12)); // 初始化向量
  const encrypted = await crypto.subtle.encrypt(
    { name: "AES-GCM", iv },
    cryptoKey,
    encodedText
  );
  return {
    iv: Array.from(iv),
    encrypted: Array.from(new Uint8Array(encrypted)),
  };
}

// 解密函数
async function decrypt(encryptedData, key) {
  const decoder = new TextDecoder();
  const cryptoKey = await crypto.subtle.importKey(
    "raw",
    new TextEncoder().encode(key),
    { name: "AES-GCM" },
    false,
    ["decrypt"]
  );
  const decrypted = await crypto.subtle.decrypt(
    {
      name: "AES-GCM",
      iv: new Uint8Array(encryptedData.iv),
    },
    cryptoKey,
    new Uint8Array(encryptedData.encrypted)
  );
  return decoder.decode(decrypted);
}

// 使用示例
(async () => {
  const secretKey = "my-secret-key";
  const originalText = "Hello, World!";
  const encryptedData = await encrypt(originalText, secretKey);
  console.log("Encrypted:", encryptedData);
  const decryptedText = await decrypt(encryptedData, secretKey);
  console.log("Decrypted:", decryptedText);
})();

注意事项

  • 密钥的管理非常重要,不应硬编码在代码中,而应安全地存储和管理。
  • 加密算法的选择应根据具体需求和安全标准来确定。
  • 在Web应用中使用加密时,应考虑到浏览器的兼容性和性能。

如果你遇到了具体的加密解密问题,可以提供更详细的信息,以便进一步分析和解决。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • JS前端加密 后端java解密

    经过排查发现是因为前端在登录的时候没有对密码等用户信息做加密处理 解决方案:   做一下最简单的处理,前端采用JS自带的 atob加密,后端采用工具解密 前端JS代码: //加密字符串,可以先将中文加密...prev = cur; i++; } return result.toString(); } /** * 加密字符串...; } return str; } /** * 解密字符串 * @return */ public static...通过输入密码为admin加密后得到 YW... 解密后得到admin 后端测试: ?...和前端一致,这样才能做到加密解密的效果 建议:   整体来说就是一次最简单的加密解密,当然这个相对不是特别安全,可以在这个基础之上,对等于号做一些处理,再通过一些其他的算法来多次加密也可以,最好是一些带随机盐的

    9.6K20

    关于JSEntrypt.js加密 Java RSA解密

    关于RSA加密解密的一个案例: 首先Java可以定义一个全局处理的一个类,通过实现RequestBodyAdvice来进行统一接口请求参数处理。...String encryptedText = IOUtils.toString(inputMessage.getBody(), Charset.defaultCharset()); 获取到加密的字符串之后就可以进行解密操作了...调用了工具类RSATools的decrypt方法,传入了获取到的需要解密的字符串,以及私钥。这就是大致的JavaRSA解密的思路,相关代码上面已经站出来了。 接下来主要说一下我前台怎么传输的吧。...这里说一下为什么要修改这个工具类的加密方法。因为在实际生产环境中,你并不能确定你的参数长度具体有多长。网上相关的案例也都是简单的使用这个工具类jsencrypt.min.js自带的加密方法。...var ct = ""; //RSA每次加密117bytes,需要辅助方法判断字符串截取位置 //1.获取字符串截取点 var bytes = new Array

    45820

    RSA加密解密

    一、RSA加密/解密在线教程 1.1、RSA算法介绍 RSA加密算法是一种可逆的非对称加密算法,即RSA加密时候用的密钥(公钥)和RSA解密时用的密钥(私钥)不是同一把。...二、RSA加密/解密使用场景 本在线工具参考国际标准和行业惯例,列出五种主流的使用场景。虽然很多系统或函数默认使用公钥加密、私钥解密,但是RSA算法也支持私钥加密、公钥解密。...ENCRYPTION_PKCS1:随机填充数据模式,每次加密的结果都不一样,是RSA加密和RSA解密使用最为广泛的填充模式。...如果证书设置了密码,则必须输入密码,然后输入RSA解密文本和RSA私钥。其中RSA解密文本必须为Base64编码后的字符串,最后点击按钮进行RSA解密。...RSA解密时间受文本和网络影响,请耐心等待,RSA解密成功即可得到加密前的原始文本。

    6.6K00

    加密解密(对比)

    对称加密算法DES由来: Data Encryption Standard,是一种对称加密算法,由 IBM 在 1975 年开发,1977 年被美国政府采用为标准加密算法。...概念: RSA 使用一对公钥和私钥进行加密和解密,公钥可以公开,私钥由个人保管,用于解密。特点: 安全性较高,但加密速度较慢,密钥长度较长。...概念: ECC 使用一对公钥和私钥进行加密和解密,公钥可以公开,私钥由个人保管,用于解密。特点: 安全性高,加密速度快,密钥长度短。...对称与非对称的比较特点对称加密 非对称加密 密钥长度 短(1024)加/解密速度 快 慢安全性 低 高密钥管理 容易 困难适用场景 小数据量 大数据量注:常见的哈希算法...技术栈:加密、解密、哈希算法、证书、数字签名等。

    17410

    加密Excel解密

    excel文件进行加密,能够保护excel文件的内容,但是有时候我们自己设置的密码,时间久了可能会忘记,或者在网上下载的excel文件或者同事之间转发的excel文件也有加密,这对于我们来说都不是很方便了...想要解密excel文件的加密,需要用到奥凯丰 EXCEL解密大师 excel加密有两种,它们的解密方法也是不一样的。...激活成功教程打开密码,激活成功教程它的方法目前只有通过软件找到正确密码才能进行解密,所以点击进入【找回密码】,选择一种找回方法进行激活成功教程 (如果对自己设置的密码还有一些印象,可以使用组合破击或者掩码激活成功教程...,它们可以提高密码找回成功率并且花费时间也会短一些) 撤销工作表保护加密,也可以说是解密编辑限制,相对来说就简单很多了,点击【解除限制】添加excel文件,点击【开始】就可以了 发布者:全栈程序员栈长

    3.6K50
    领券