国密SM2前端加密解密示例

02-27 阅读 0评论

目录

国密SM2前端加密解密示例,国密SM2前端加密解密示例,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,安装,前端,登录,第1张
(图片来源网络,侵删)

一、 安装sm2依赖

二、编写代码

1、data中绑定数据

2、公钥加密

3、私钥解密

国密SM2前端加密解密示例,国密SM2前端加密解密示例,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,安装,前端,登录,第2张
(图片来源网络,侵删)

4、按钮绑定一下,数据可见一下

三、完整代码


一、 安装sm2依赖

npm install --save sm-crypto

二、编写代码

1、data中绑定数据

要改变的数据phone和过程数据copyphone,公钥publicKey和私钥privateKey

具体生成测试公钥私钥可参照SM2加解密

C1为65字节第1字节为压缩标识,这里固定为0x04

publicKey是'04'+公钥X+公钥Y

国密SM2前端加密解密示例,国密SM2前端加密解密示例,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,安装,前端,登录,第3张
(图片来源网络,侵删)

privateKey直接复制粘贴

实际运行情况下可参考RuoYi前后端分离(登录密码加密)更改为SM2加密,密钥由后端传输

export default {
    data() {
        return {
            copyphone: '',
            phone: '',
            publicKey: "",
            privateKey: "",
        }
    },

2、公钥加密

    getphone() {
            const sm2 = require('sm-crypto').sm2;
            var publicKey = this.publicKey;//加密使用
            var encrText = this.phone;//例如var enxrText = this.phone;
            const cipherMode = 1;
            let encryptData = sm2.doEncrypt(encrText, publicKey, cipherMode) // 加密结果
            this.copyphone = encryptData;
            return '04' + encryptData;//04可不要具体看后端要求
        },

3、私钥解密

returnphone() {
            const sm2 = require('sm-crypto').sm2;
            var privateKey = this.privateKey;
            var encrText = this.copyphone;
            const cipherMode = 1
            let decryptData = sm2.doDecrypt(encrText, privateKey, cipherMode) // 解密结果
            this.copyphone = decryptData;//赋值方便处理
            return decryptData;
        }

4、按钮绑定一下,数据可见一下

    
        
        原始数据 
        
        过程数据
        公钥
        私钥
        sm2加密按钮
        sm2解密按钮
    

三、完整代码

请放在Vue项目下运行

    
        原始数据
        过程数据
        公钥
        私钥
        sm2加密按钮
        sm2解密按钮
    


// npm install --save sm-crypto
// 第一步就是安装依赖
//解密使用 var privateKey = "私钥";
//加密使用 var publicKey  = "公钥"; 
export default {
    data() {
        return {
            copyphone: '',
            phone: '',
            publicKey: "自己生成好的填进来",
            privateKey: "自己生成好的填进来",
        }
    },
    methods: {
        getphone() {
            const sm2 = require('sm-crypto').sm2;
            //C1为65字节第1字节为压缩标识,这里固定为0x04
            //publicKey是'04'+公钥X+公钥Y
            //密钥对生成https://i.goto327.top/CryptTools/SM2.aspx
            var publicKey = this.publicKey;//加密使用
            var encrText = this.phone;//例如var enxrText = this.phone;
            const cipherMode = 1;
            let encryptData = sm2.doEncrypt(encrText, publicKey, cipherMode) // 加密结果
            this.copyphone = encryptData;
            return '04' + encryptData;//04可不要具体看后端要求
        },
        returnphone() {
            const sm2 = require('sm-crypto').sm2;
            var privateKey = this.privateKey;
            var encrText = this.copyphone;
            const cipherMode = 1
            let decryptData = sm2.doDecrypt(encrText, privateKey, cipherMode) // 解密结果
            this.copyphone = decryptData;//赋值方便处理
            return decryptData;
        }
    }
}

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]