面对MD5、SHA、DES、AES、RSA等等这些名词你是否有很多问号?这些名词都是什么?还有什么公钥加密、私钥解密、私钥加签、公钥验签。这些都什么鬼?或许在你日常工作没有听说过这些名词,但是一旦你要设计一个对外访问的接口,或者安全性要求高的系统,那么必然会接触到这些名词。所以加解密、加签验签对于一个合格的程序员来说是必须要掌握的一个概念。那么加解密相关的密码学真的离我们很遥远吗?其实生活中有很多常见的场景其实都用到了密码学的相关知识,我们不要把它想得太难。例如在《睡在我上铺的兄弟》这一段中作弊绕口令中,小瘪三代表A,小赤佬代表B,唉呀妈呀代表C,坑爹呀是D,这一段绕口令其实也是密码学的一种。
加解密原文:也叫明文,就是被隐藏的文字加密法:指隐藏原文的法则密文:伪文,值对原文按照加密处理后生成可公开传递的文字秘钥:在加密法中起决定性的因素,可能是数字、词汇,也可能是一些字母,或者这些东西的组合。加密的结果生成了密文,要想让接受者能够读懂这些密文,那么就要把加密法以及密钥告诉接受者,否者接受者无法对密文解密,也就无法读懂原文对称加密算法加密和解密都使用同一个秘钥优点:算法公开,计算量小,加密速度快,加密效率高缺点:秘钥的管理和分发困难,安全性较低在数据传送前,发送方和接收方必须商定好秘钥,然后双方都必须要保存好秘钥,如果一方的秘钥被泄露了,那么加密的信息也就不安全了。另外,每对用户每次
运行环境jdk8,springboot业务背景:服务之间接口调用,通过签名作为安全认证来保证API的安全性。签名规则:1、线下分配appid和appKey,2、秘钥key+当前时间的毫秒+随机字符串通过加密工具方法(如MD5,AES等)生成一个token,3、加入timestamp(时间戳),10分钟内数据有效4、加入signature,所有数据的签名信息。传参说明:只对业务所需的参数进行加密,其他参数在头部携带:GET请求对url的参数进行加密,POST请求对body体进行加密。例如:A服务调用B服务get请求接口:xxx/xx?a=1&b=2对参数a=1&b=2进行加密得到signA服务h
RSA简介RSA是一种非对称加密算法,使用公钥加密就可以使用私钥解密,使用私钥加密就可以使用公钥解密。RSA公钥对外公开,私钥自己保留。RSA既能加密、解密,也能加签、验签加密解密:RSA是公钥加密,私钥私密。数据发送方使用接收方的公钥来对数据进行加密,接收方接收到数据之后用自己的私钥解密加签验签:RSA私钥加签,公钥验签。数据发送方使用自己的私钥对数据进行签名,数据接收方使用数据发送方的公钥来验签。我遇到的业务场景是:服务端接口开发人员给了我一套客户端的PKCS1格式的私钥字符串和服务端的公钥字符串。我给服务端发送数据的时候要使用私钥对数据进行签名之后再发送。接收到服务端返回的数据之后要使用
目录一、序言二、关于PKCS#1和PKCS#8格式密钥1、简介2、区别二、关于JSEncrypt三、关于jsrsasign四、前端RSA加解密、加验签示例1、相关依赖2、cryptoUtils工具类封装3、测试用例五、Java后端RSA加解密、加验签1、CryptoUtils工具类封装2、测试用例六、前后端加解密、加验签交互测试1、前端加密,后端解密(1)前端代码(2)后端代码2、后端加密,前端解密(1)后端代码(2)前端代码3、前端加签,后端验签(1)前端代码(2)后端代码4、后端加签,前端验签(1)后端代码(2)前端代码一、序言最近有一些安全性要求比较高的场景,我们提供API给第三方商户用
终于把前后端sm加解密以及加签验证调通了! 领导要求我对项目的数据传输安全考虑下,因此就想到了对敏感字段做加密和对请求、响应做数字签名验证。网上看了很多文章,可能是因为我对加密这块不了解,感觉都比较乱。所以前前后后花了4天才把前后端调通。特地写一篇文章记录下流程。这里使用的是sm国密算法。不对的地方请读者评论指出。1.简单说明:前端使用sm-crypto库后端加密库使用bc库,架构上使用aop,注解等实现2.具体实现-前端加密流程:生成一个对称密钥,对每个字段使用sm4对称加密,然后进行base64编码。对称密钥使用sm2非对称加密//生成对称密钥exportfunctiongenSM4Sym
一、工具类POM中增加hutoolcn.hutoolhutool-core5.6.5packagecn.test.encrypt.utils.sm2;/***SM2签名所计算的值可以根据实际情况增加删除字段属性*/publicclassSM2SignVO{ //16进制的私钥 publicStringsm2_userd; //椭圆曲线点X publicStringx_coord; //椭圆曲线点Y publicStringy_coord; //SM3摘要Z publicStringsm3_z; //明文数据16进制 publicStringsign_express; //SM3摘要值 publ
近期工作学习中,遇到了几个对接第三方API的需求。对于提供接口的平台,提供的接口为什么能保证安全可靠呢?这其中又是如何防止第三方的恶意使用呢?如何鉴别调用者的身份呢?API接口加密的原理API接口加密的原因无非就两个:核实调用方的身份,签名验签验证调用传输数据,数据加密加密和解密的方式,根据加解密方式的异同可以分为:对称加密和非对称加密。对称加密,加密和解密使用的是同一把密钥。常用的对称加密算法:DES,AES,3DES非对称加密,加密和解密使用的是不同的密钥,一把作为公开分享给加密方的叫做公钥,另一把不分享作为解密的私钥。公钥加密的密文只有私钥能进行解密;私钥加密的密文也只有公钥能进行解密。
1前言面对MD5、SHA、DES、AES、RSA等等这些名词你是否有很多问号?这些名词都是什么?还有什么公钥加密、私钥解密、私钥加签、公钥验签。这些都什么鬼?或许在你日常工作没有听说过这些名词,但是一旦你要设计一个对外访问的接口,或者安全性要求高的系统,那么必然会接触到这些名词。所以加解密、加签验签对于一个合格的程序员来说是必须要掌握的一个概念。接下来我们就一文彻底搞懂这些概念。2没有硝烟的战场——浅谈密码技术没有根基也许可以建一座小屋,但绝对不能造一座坚固的大厦。密码这个词有很多种的解释,在现代社会如果不接触编程的话,那么普遍的认为是我们设置的登录密码、或者是去银行取钱时输入的数字。都是我们
1前言面对MD5、SHA、DES、AES、RSA等等这些名词你是否有很多问号?这些名词都是什么?还有什么公钥加密、私钥解密、私钥加签、公钥验签。这些都什么鬼?或许在你日常工作没有听说过这些名词,但是一旦你要设计一个对外访问的接口,或者安全性要求高的系统,那么必然会接触到这些名词。所以加解密、加签验签对于一个合格的程序员来说是必须要掌握的一个概念。接下来我们就一文彻底搞懂这些概念。2没有硝烟的战场——浅谈密码技术没有根基也许可以建一座小屋,但绝对不能造一座坚固的大厦。密码这个词有很多种的解释,在现代社会如果不接触编程的话,那么普遍的认为是我们设置的登录密码、或者是去银行取钱时输入的数字。都是我们