资讯专栏INFORMATION COLUMN

4W2H之加密签名

stackfing / 3006人阅读

摘要:从上面的介绍中可以看出,加密主要是用来使数据无法被识别,而签名主要是用来确保数据未被修改。又被称为非对称加密,拥有一个公钥和一个私钥,公钥可以交给对方,私钥自己保存。公钥用作加密使用,而私钥用于签名。

what 什么是加密和签名

  加密,用某种特殊的方式对数据进行处理,使其他人或者机器无法正常处理。如常用的rsa非对称加密,MD5,des和aes对称加密等等。
  签名,在传输数据前先对数据 "a" 进行处理得到数据 ‘b’,这部分操作被称为签名。然后将a 和 b发送给接受者,接受者获得数据后对数据 "b" 进行 解签得到数据 ‘c’,如果数据‘c’和数据‘a’一样,则认为数据没有被修改。
  从上面的介绍中可以看出,加密主要是用来使数据无法被识别,而签名主要是用来确保数据未被修改。

when 哪些场景使用

  在安全为重中之重的支付领域,常常会采用加密和加签的方式来确保数据的安全性。由于RAS这种加密方式不容易被破解,因此通常使用它确保安全。
  RAS又被称为非对称加密,拥有一个公钥和一个私钥,公钥可以交给对方,私钥自己保存。公钥用作加密使用,而私钥用于签名。
  首先,商户会生成一对公私钥,公钥交给银行。而银行同样也会将生成的公钥交给商户。商户向银行发送支付报文时,先用自身的私钥对支付需要的参数进行签名生成sign这个字段,接着将sign这个字段值和之前的参数用银行的公钥加密,接着通过某些传输协议发送给银行。
  银行得到报文后,用自身的私钥进行解密,如果不能解开,证明不是商户发的。如果解密成功,再用商户的公钥对sign进行解签,与数据进行对比判断。

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

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

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

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

where 哪些地方需要注意

不一定Md5只能用来加密,同样可以用来加签。

RAS虽然安全,但是会给开发带来难度。

How to use 加签
       Map 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 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方式进行加签,在这边应该可以看出来加签只是加密的一种运用。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71980.html

相关文章

  • 加密安全分析系列某打车软件apk

    摘要:最近发现打车软件的非常的火,并听说他们进行了非常严密的防护,防止用户进行二次打包。经过严密的分析发现司机版主要的防护在两个地方。 最近发现打车软件的apk非常的火,并听说他们进行了非常严密的防护,防止用户进行二次打包。今天我们来分析一下他的安全性到底如何(以司机版为例)。 经过严密的分析发现:司机版主要的防护在两个地方。 第一个是:登录过程中,通过传递context对象到so库中的方...

    zhkai 评论0 收藏0
  • BREW SDK 九大功能安全服务

    摘要:中的安全服务是指应用程式使用提供的来实现安全性的功能。同时,提供了非对称算法加密。非对称算法加密过程如下发送方对明文使用加密算法和公开密钥进行加密,得到密文接收方对密文使用解密算法和私人密钥进行解密,得到明文。 BREW中的安全服务是指应用程式使用BREW提供的API来实现安全性的功...

    sixleaves 评论0 收藏0
  • Swoole 源码分析——Server模块OpenSSL (上)

    摘要:另一方比如小明得到公钥之后,双方就可以通信。然而,中间人还是可能截获公钥,然后自己弄一对秘钥,然后告诉小明说是小红的公钥。这样,小亮在签署小红的身份证的时候,可以在小红身份证后面附上自己的身份证。一般来说,自签名的根身份证用于公司内部使用。 前言 自从 Lets Encrypt 上线之后,HTTPS 网站数量占比越来越高,相信不久的未来就可以实现全网 HTTPS,大部分主流浏览器也对 ...

    ky0ncheng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<