js几种加密/解密方法

2023-11-10

1.斯坦福大学的js加密库(简称SJCL)


关于1.是斯坦福大学计算机安全实验室创立的项目,旨在创建一个安全、快速、短小精悍、易使用、跨浏览器的js加密库。如果有更复杂的安全需求,可以查阅API,文档地址是(http://bitwiseshiftleft.github.com/sjcl/doc/),对应的demo页面是(http://bitwiseshiftleft.github.com/sjcl/demo/)。

比较容易上手,简单的用下面的代码就可以进行加密、解密数据。

sjcl.encrypt("password", "data")//加密数据

sjcl.decrypt("password","encrypted-data") // 解密数据

2.crypto-js


crypto是node的内置模块,目的是提供通用的加密和哈希算法。nodejs用c/c+=实现这些算法后,通过crypto这个模块暴露位js接口,方便使用,提高运行速度。使用的时候要安装一下。
 

 

一、base64加密

base64的github地址

示例

<html>
    <head>
        <title>前端的base64使用方法</title>
    </head>
    <body>
    </body>
<script>
var str = "hello";
var str64 = window.btoa("hello");
console.log("字符串是:"+str);
console.log("经base64编码后:"+str64);
console.log("base64解码后:"+window.atob(str64));
</script>
</html>

输出结果

二、MD5加密(不可逆)

MD5加密的github地址

关于MD5:
MD5.js是通过前台js加密的方式对用户信息,密码等私密信息进行加密处理的工具,也可称为插件。

MD5共有6种加密方法:
1, hex_md5(value)
2, b64_md5(value)
3, str_md5(value)
4, hex_hmac_md5(key, data)
5, b64_hmac_md5(key, data)
6, str_hmac_md5(key, data)

md5代码下载地址——点此下载

下载好了用script 标签引入使用

<script src="md5/md5.js"></script>"></script>
    <script>
        var code = "123456";
        var username = "123456";
        var password = "123456";
        var str1 = hex_md5("123456");
        var str2 = b64_md5("123456");
        var str3 = str_md5("123456");
        var str4 = hex_hmac_md5(code,code);
        var str5 = b64_hmac_md5(username,username);
        var str6 = str_hmac_md5(password,password);
        console.log(str1);            // e10adc3949ba59abbe56e057f20f883e
        console.log(str2);            // 4QrcOUm6Wau+VuBX8g+IPg
        console.log(str3);            // áÜ9IºY«¾VàWò��>
        console.log(str4);            // 30ce71a73bdd908c3955a90e8f7429ef
        console.log(str5);            // MM5xpzvdkIw5VakOj3Qp7w
        console.log(str6);            // 0Îq§;Ý��9U©��t)ï
</script>

输出结果

三、sha1加密(不可逆)

sha1的github地址

此处没找到sha1.js下载地址,所以在bootcdn中找在线文件到引入,需要的可自行从bootcdn中下载

<script src="https://cdn.bootcss.com/js-sha1/0.6.0/sha1.js"></script>
<script type="text/javascript">
        var sha1_1 = sha1("mosquito~");
        console.log(sha1_1);
        var sha1_2 = sha1("admin:1001");
        console.log(sha1_2);
</script>

输出结果

四、编码和解码字符串

使用JS函数的escape()和unescape(),分别是编码和解码字符串

<script type="text/javascript">
      var escape1 =escape("我的名字是:mosquito~");//编码
      console.log(escape1);
      var unescape1 = unescape(escape1); //解码
      console.log(unescape1);
</script>  

输出结果

五、AES/DES加密解密

下载crypto-js.js 引入使用 网址是点击下载

var aseKey = "12345678"     //秘钥必须为:8/16/32位
var message = "80018000142";
//加密
var encrypt = CryptoJS.AES.encrypt(message, CryptoJS.enc.Utf8.parse(aseKey), {
  mode: CryptoJS.mode.ECB,
  padding: CryptoJS.pad.Pkcs7
}).toString();
console.log(encrypt);    //VKrZlqykem73x8/T2oCfCQ==

//解密
var decrypt = CryptoJS.AES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(aseKey), {
  mode: CryptoJS.mode.ECB,
  padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8);
console.log(decrypt);    //80018000142

【注】:加密的时候必须转成字符串 使用toString。 解密的时候 必须使用utf8的格式

 

RSA加密

var encrypt = new JSEncrypt();
          encrypt.setPublicKey($('#pubkey').val());
          var encrypted = encrypt.encrypt($('#input').val());
 
          // Decrypt with the private key...
          var decrypt = new JSEncrypt();
          decrypt.setPrivateKey($('#privkey').val());
          var uncrypted = decrypt.decrypt(encrypted);
 


sha256 js 前端加密

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js几种加密/解密方法 的相关文章

  • 使用Python开发Web应用程序

    我一直在用 python 做一些工作 但这都是针对独立应用程序的 我很想知道 python 的任何分支是否支持 Web 开发 有人还会建议一个好的教程或网站吗 我可以从中学习一些使用 python 进行 Web 开发的基础知识 既然大家都说
  • 下载 PyQt6 的 Qt Designer 并使用 pyuic6 将 .ui 文件转换为 .py 文件

    如何下载 PyQt6 的 QtDesigner 如果没有适用于 PyQt6 的 QtDesigner 我也可以使用 PyQt5 的 QtDesigner 但是如何将此 ui 文件转换为使用 PyQt6 库而不是 PyQt5 的 py 文件
  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql
  • Python:元类属性有时会覆盖类属性?

    下面代码的结果让我感到困惑 class MyClass type property def a self return 1 class MyObject object metaclass MyClass a 2 print MyObject

随机推荐

  • 退出屏保前玩一把游戏吧!webBrowser中网页如何调用.NET方法

    本文主要以 HackerScreenSaver 新功能的开发经历介绍 webBrowser中网页如何调用 NET方法的过程 1 背景 之前开源了一款名为 HackerScreenSaver 的 Windows 屏保程序 该程序具有模拟黑客炫
  • 大专应届生内心独白:室友都有依靠,孤单的只有我自己

    前言 室友都有大腿抱 孤单的只有自己 作为大专生 我们大三下学期没有课程 主要是写论文 找工作 可我一点也不着急 因为我还没做好毕业的准备 也很迷茫 室友A准备回老家考公务员 室友B的父母已经给他找好了工作 室友C去亲戚公司了 而我 却只能
  • 一个关于POP3协议超时的问题

    前段时间在做一个email项目时 一个测试人员报了一个BUG 就是当email客户端在连接hotmail 的POP3服务器之后大概4 5分钟就会自动把客户端断掉 为这个问题我查了一下POP协议规范 协议中有这么一段话 POP3服务器可以拥有
  • 老司机才懂的测试问题定位方法!

    在软件开发过程中 项目测试是至关重要的一环 然而 测试过程中常常会遇到各种问题 本文将介绍一些常见的项目测试问题 并探讨如何有效地定位这些问题 1 问题一 功能不符合预期 定位方式 检查需求文档和设计文档 确保理解功能的正确性和预期行为 仔
  • MSF使用教程

    MSF使用教程 1 简介 Metasploit是一款开源安全漏洞检测工具 附带数百个已知的软件漏洞 并保持频繁更新 被安全社区冠以 可以黑掉整个宇宙 之名的强大渗透测试框架 2 MSF模块介绍 1 辅助模块 auxiliary 负责执行信息
  • 字符集编码(GBK,BIG5,UNICODE)与C++的string/wstring

    GBK BIG5等字符集编码范围的具体说明 一 预备知识 1 字符 字符是抽象的最小文本单位 它没有固定的形状 可能是一个字形 而且没有值 A 是一个字符 德国 法国和许多其他欧洲国家通用货币的标志 也是一个字符 中 国 这是两个汉字字符
  • 以太坊2.0主网即将上线 一轮前所未有的超级牛市来了

    8月4日 以太坊2 0第0阶段信标链的最终版测试网Medalla上线 多个客户端同时运行测试 至少有16384个验证者参与了本次测试 在测试过程中 虽然出现了Nimbus 和 Lodestar 节点因无法处理测试网的负载量而卡住 导致Med
  • logback配置两套日志路径

    日志推送工作根据公司日志管理规范及国家攻防演练需要 请协助对所有应用重要场景的日志进行收集 需求如下 1 涉及场景 用户登录场景 密码修改场景 密码找回场景 注册场景 2 日志字段需求及格式 filebeat对接日志格式 登录 修改 注册
  • 消息队列MQ-面试题

    一个用消息队列 的人 不知道为啥用 MQ 这就有点尴尬 1 什么是消息队列 可以看作是一个存放消息的容器 当我们需要使用消息的时候可以取出消息供自己使用 消息队列是分布式系统中重要的组件 使用消息队列主要是为了通过异步处理提高系统性能和削峰
  • vue3 中应用 element plus,pinia 实现简易购物车

    使用pinia 进行全局的状态管理 降低组件之间的耦合性 一 项目需要的资源 1 element plus官方地址 https element plus gitee io zh CN guide quickstart html 2 pini
  • matlab卡农,又用Mathematica写了一段卡农

    你能在这里听到它 用数学软件演奏音乐早已不是什么新鲜事 很早就有人用Matlab弹奏卡农或是最炫民族风 最近我知道还有人用无理数生成一段音乐 很有趣 而我选择用Mathematica弹奏卡农是因为卡农这种谱曲方式很奇妙 体现在程序上也会是简
  • 内网如何下载docker镜像

    内网无法联网 因此不能直接运行docker pull命令下载docker镜像 可按下述方法获取docker镜像 步骤 1 在可以联网的机子上执行docker pull命令下载镜像 如 sudo docker pull freewil bit
  • 2015年1月13日星期二(11-1深度缓存和可见性简介)

    新的一年 开始新的篇章 终于进入第11章了 必须首要搞这个 争取今年搞完 我也相信 会对3D学习不是浪费时间 而是内力提升 在以前 用画家算法进行多边形排序 即根据渲染列表中的每个多边形的平均 最小或最大值进行排序 然后 再从后到前的顺序绘
  • oracle修改open_cursors,oracle的open_cursors问题探究

    今天老魏遇到了一个这样的问题 在google之后 发现讲open cursors参数调大一些 就可以避免这样的问题 具体操作方法 可以自行百度 google 老魏在学习的时候 对这个游标的概念有点傻傻分不清 于是花费了一些时间 想把这个问题
  • Kali系统MSF模块暴力破解MySQL弱口令漏洞

    一 实验环境 1 攻击方 攻击环境使用KALI系统 使用虚拟机搭建 的Metasploit模块 msfconsole是metasploit中的一个工具 它集成了很多漏洞的利用的脚本 并且使用起来很简单的网络安全工具 这里要特别强调 被攻击的
  • leetcode小白随笔记(二)

    auto类型说明符 用它就能让编译器替我们去分析表达所属的类型 string对象上的操作 初始化的方式 string对象 上的操作 标准库类型vector 定义和初始化vector对象 迭代器介绍 标准容器迭代器的运算符 使用迭代器 不使用
  • 中科大DIA复习内容

    DIA复习 第2章 图像数字化 可分离和正交图像变换 图像变换 成像过程 视觉过程 成像变换 成像亮度 视觉系统 采样和量化 空间分辨率越低 区域边界出现方块 图像幅度分辨率越低 图像出现虚假轮廓 量化的比特数越多 灰度级越多 连通悖论 考
  • 进入到文件系统,使用mount命令挂载到Linux不成功。出现 failed: No such device

    如图 原因 nfs模块未配置加载到内核中 解决办法 加入nfs模块到内核中 重新配置 配置如下 File systems gt Network File Systems gt lt gt NFS client support NFS cli
  • STM32RS485通信

    硬件图 具体看各自的板载资源图 本章所要实现的功能是 通过操作 KEY UP 键 STM32F1 的串口 2 将 PC 机发 送过来的数据原封不动的返回给 PC 机串口 同时 DS0 指示灯不断闪烁 提示系 统正常运行 程序框架如下 1 初
  • js几种加密/解密方法

    1 斯坦福大学的js加密库 简称SJCL 关于1 是斯坦福大学计算机安全实验室创立的项目 旨在创建一个安全 快速 短小精悍 易使用 跨浏览器的js加密库 如果有更复杂的安全需求 可以查阅API 文档地址是 http bitwiseshift