国密SM2算法(JS加密,C#、Java解密)
常见的渗透测试会将网站登录时密码使用明文传输视为风险。推荐使用国密算法或者RSA算法对密码进行加密传输。
RSA加密(JS加密,C#、Java解密)请参考《RSA对称加密(JS加密,C#、Java解密)》
本文描述国密SM2算法的实现。
一、工作原理
前端js使用公钥进行加密,后端使用私钥进行解密(后端可以是C#或java语言)。
二、实现步骤
为了方便验证加密、解密结果,本文以一组固定的公钥和私钥进行演示(公钥和私钥后文有描述如何产生)。
公钥:04F59485B23304990ED45E42521BE504D0DE358B9E4031A172EF48700071AF985A8EA8B12BB479E24152814EE61840932BFFF5B3B1657C9CF50A61756B1D901E1C
私钥:
78AEBAE7DE025B6954357DB327F4AE412B3657B1E1ED36F89927C065155DBA9A
(一)JS前端加密
直接看demo吧,代码参考网页源代码。
在线演示地址 每次加密结果都不一样。
(二)Java SM2加解密
我这里使用的是VScode调试Java代码。整个程序结构大概像这样:
注意:Java加解密使用的是 bcprov-jdk16-1.46.jar 这个版本的包。
(完整代码见文末下载链接)
(三)C# SM2加解密
写了个调试工具,大概长这样:
注意:C#加解密使用的是 BouncyCastle.Crypto.dll,版本为:1.9.0.1,不同版本加密代码不一样,折腾这个问题折腾了挺久。
完整代码下载:
https://download.csdn.net/download/a497785609/87459516
备用下载地址:
https://qingshanboke.com/uploadfiles/demo/sm2.rar
国密SM2算法(JS加密,C#、Java解密)相关推荐
- 国密SM2的前端加密,后端解密(Java版本)及SM3 摘要加密
一.简介 国密即国家密码局认定的国产密码算法.常用的主要有SM2,SM3,SM4. SM2:椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,为非对称加密,基于ECC.该算法已公开.由于该算法基于EC ...
- 国密SM2算法的只求理解不求甚解 (4/5)SM2算法加解密协议
国密SM2算法的只求理解不求甚解 (1/5)前置数学知识:模运算 国密SM2算法的只求理解不求甚解 (2/5)前置数学知识:平面几何 国密SM2算法的只求理解不求甚解 (3/5)SM2算法数学模型 国 ...
- 一文告诉你,国密SM2算法有多优秀
可能很多人都想不到,密码技术是与核技术.航天技术并列的国家三大安全核心技术之一,在保障信息安全,建设行业网络安全环境,增强我国行业信息系统的"安全可控"能力等方面发挥着至为关键的作 ...
- 国密SM2算法与RSA算法对比分析
SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在安全性能.速度性能等方面都优于RSA算法,在我国商用密码体系中被用来替换RSA算法.国家密码管理局于2010年12月17日发 ...
- 国密SM2算法密钥派生函数KDF的实现
前段时间需要实现国密算法SM2的签名.验签.加密.解密等功能,加解密过程使用到的密钥派生函数(KDF),从网上搜到的代码不符合<GMT 0003.4-2012 SM2椭圆曲线公钥密码算法 > ...
- 国密SM2算法的java和nodejs实现
转至 http://mp.weixin.qq.com/s/nboZAvg1qYiJIEun6yF2aQ 国密即国家密码局认定的国产密码算法,即商用密码.包括对称加密(SM1) ,非对称加密(SM2) ...
- mysql国密算法_【国密SM2算法】通过公钥证书获取JAVA对象
网上关于国密算法的资料较单一,大部分代码都是写的怎么通过java代码生成公私钥串. 实际项目中对方已经给了他们的公钥证书,这里记录如何通过代码解析获得Ecpoint对象并输出 关键代码 String ...
- PBOC3.0中使用的国密SM2算法
一.知识准备 PBOC3.0规范就是<中国金融集成电路(IC)卡规范>3.0版本. SM2是国密局推出的一种他们自己说具有自主知识产权的非对称商用密码算法.本身是基于ECC椭圆曲线算法的, ...
- 谈谈PBOC3.0中使用的国密SM2算法
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/39780825 作者:小马 一 知识准备 SM2是国密局推出的一种他们自己说具有自主 ...
最新文章
- Meta 开移动端 AI 生成神器 PyTorch Live,打造人工智能驱动的移动体验
- vim——打开多个文件、同时显示多个文件、在文件之间切换
- 自己挖的坑自己填--JVM报内存溢出
- 实验0 了解和熟悉操作系统
- 从Struts2 action 获取json 数据格式 显示到Jquery EasyUI
- inline-block的兼容性问题
- Jsoup(二)-- Jsoup查找DOM元素
- python无参数装饰器_Python装饰器(不带参数)
- 高一计算机信息与技术旅游,信息技术的发展与旅游信息系统的建设
- Selenium分布式运行:SeleniumGrid
- 一文告诉你 K8s PR (Pull Request) 怎样才能被 merge?
- 图片转Word文档怎么转?这两种转换方法学起来
- linux内存管理笔记(三十四)----匿名映射
- python怎么做表格_零基础小白怎么用Python做表格?
- 电赛公开课整理(一),电路基础,截图+模电知识【15000字】【原创】
- 如何修改服务器凭据,如何更改操作数据库帐户的用户凭据
- 链家数据分析(社招),骗局???
- Python 习题 老虎、棒棒、鸡、虫
- 啊哈C——学习3.3一起来找茬
- 贪心---排序不等式、绝对值不等式、推公式
热门文章
- 简述sizeof和strlen的区别
- c++学习书籍推荐《C++程序设计语言(特别版)》下载
- MySQL高级---04
- 模块度(Modularity)与Fast Newman算法讲解与代码实现
- PS磨皮插件portraiture最新版磨皮工具
- 弗吉尼亚-伍尔夫:在优雅和疯癫之间游走
- 打乱魔方软件_魔方打乱程序思路
- 易基因|m5C RNA甲基化测序技术---从mRNA到全转录组(mRNA+lncRNA+tRNA)m5C单碱基分辨检测|技术解读
- 计算机毕业设计java+ssm田园乐农家院团建平台_农家乐网站
- 怎么制作鸿蒙系统启动盘,开物成务,鸿蒙操作系统全景解构