"简单"的加密签名

栏目: 编程工具 · 发布时间: 5年前

内容简介:作为最受欢迎的御三家之一,想必大家对于小火龙还是相当熟悉的,那么图片的这个场景发生在哪里呢?这个“秘密”就靠大家来破解了。答案将在结尾揭晓~~加密,用某种特殊的方式对数据进行处理,使普通的接受者无法正常处理数据。如常用的签名,在传输数据前先对数据

作为最受欢迎的御三家之一,想必大家对于小火龙还是相当熟悉的,那么图片的这个场景发生在哪里呢?这个“秘密”就靠大家来破解了。答案将在结尾揭晓~~

什么是加密和签名

加密,用某种特殊的方式对数据进行处理,使普通的接受者无法正常处理数据。如常用的 RSA 非对称加密, MD5 , DESAES 对称加密等等。

签名,在传输数据前先对数据 A 进行处理得到数据 B ,然后将 AB 发送给接受者,接受者获得数据后对数据 B 进行 解签得到数据 C ,如果数据 C 和数据 A 一样,则认为数据没有被修改。

从上面的介绍中可以看出,加密主要是用来使数据无法被正确识别,而签名主要是用来确保数据未被修改。

哪些场景使用

在安全为重中之重的支付领域,常常会采用加密和加签的方式来确保数据的安全性。由于RAS这种加密方式不容易被破解,因此通常使用它保证数据安全。

RAS又被称为非对称加密,拥有一个公钥和一个私钥,公钥可以交给对方,私钥自己保存。公钥用作加密使用,而私钥用于签名。

首先,商户会生成一对公私钥,公钥交给银行。而银行同样也会将生成的公钥交给商户。商户向银行发送支付报文时,先用自身的私钥对支付需要的参数进行签名生成sign这个字段,接着将sign这个字段值和之前的参数用银行的公钥加密,接着通过某些传输协议发送给银行。

银行得到报文后,用自身的私钥进行解密,如果不能解开,证明不是商户发的。如果解密成功,再用商户的公钥对sign进行解签,与数据进行对比判断。

为什么

为什么不用Des,Aes或者Md5。

Des这些对称加密,需要的是一个key。这些key在一定条件下可以被暴力破解,MD5同样也是如此。

为什么不用公钥加签,私钥加密?

假设用私钥加密,公钥加签。那么在商户发给银行的过程中,银行需要用公钥解密,由于公钥是被暴露在外面的,如果被非银行的人拿到,数据被解密后就能看到了,虽然他不能确定这些数据有没有被修改过。而如果用公钥加密,私钥是掌握在银行手中。

哪些地方需要注意

  1. 不一定Md5只能用来加密,同样可以用来加签。
  2. RAS虽然安全,但是会给开发带来难度。

How to use

加签

Map<String,String> map=new HashMap<>();
        map.put("client_id", AppConstant.APPID);
        map.put("method","user.baseinfo");
        map.put("access_token",accessToken);
        map.put("timestamp",String.valueOf(System.currentTimeMillis()));
        map.put("client_secret",AppConstant.APPSECRET);
        String sign= MD5.md5Sign(map);
        map.put("sign",sign);
        
        /**md5加签**/
        public static String md5Sign(Map<String,String> params){
            String[] keys = params.keySet().toArray(new String[0]);
            Arrays.sort(keys);
            // 第二步:把所有参数名和参数值串在一起
            StringBuilder query = new StringBuilder();
            for (String key : keys) {
                String value = params.get(key);
                query.append(key).append(value);
            }
            // 第三步:md5加密
        return DigestUtils.md5Hex(query.toString());
    }
复制代码

这段代码用的是md5方式进行加签,在这边应该可以看出来加签只是加密的一种运用,因此任何一种加密方式都可以用做签名。

本人昨天刚刚离职,可能是更想去看看外面精彩的世界吧,和小智一样想要成为神奇宝贝大师~~~


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

机器学习

机器学习

周志华 / 清华大学出版社 / 2016-1-1 / 88.00元

机器学习是计算机科学与人工智能的重要分支领域. 本书作为该领域的入门教材,在内容上尽可能涵盖机器学习基础知识的各方面。 为了使尽可能多的读者通过本书对机器学习有所了解, 作者试图尽可能少地使用数学知识. 然而, 少量的概率、统计、代数、优化、逻辑知识似乎不可避免. 因此, 本书更适合大学三年级以上的理工科本科生和研究生, 以及具有类似背景的对机器学 习感兴趣的人士. 为方便读者, 本书附录给出了一......一起来看看 《机器学习》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具