Java 加密算法

/**
     * 签名方法
     * 传参Values值ASCII排序拼接后缀加盐(123456) 进行MD5加密(字母小写)
     * 例如{"channel":"1","customerId":"1","signature":"56a0281fd65d73f05cedd7d94bb561ee"}
     * (signature值为11123456MD5加密(字母小写) )  
     *
     * @param parameters
     * @return
     */
    public static String createSign(SortedMap<String, Object> parameters, String key) {
        String characterEncoding = "UTF-8";
        StringBuffer sbKey = new StringBuffer();
        //所有参与传参的参数按照ASCII排序(升序)

        List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(parameters.entrySet());
        Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() {
            @Override
            public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
                return (o1.getKey()).toString().compareTo(o2.getKey());
            }
        });


        Set es = parameters.entrySet();
        Iterator it = es.iterator();
        while (it.hasNext()) {
            Map.Entry entry = (Map.Entry) it.next();
            String k = (String) entry.getKey();
            Object v = entry.getValue();
            //空值不传递,不参与签名组串
            if (null != v && !"".equals(v)) {
                sbKey.append(v);
            }
        }
        sbKey = sbKey.append(key);
        //MD5加密,结果转换为小写字符
        String sign = MD5Util.MD5Encode(sbKey.toString(), characterEncoding).toLowerCase();
        return sign;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自写Java加密算法可能需要使用Java Cryptography Architecture (JCA) 提供的一系列类来实现。JCA定义了一些常用的密码学算法框架,如Cipher、MessageDigest、MAC、Signature等,可以用于实现各种加密、哈希、认证码和数字签名算法。 要自写Java加密算法,您可以使用JCA提供的Cipher类。Cipher类提供了加密和解密的功能,可以使用不同的算法和模式进行加密,如对称加密算法、非对称加密算法、哈希函数等。您可以自定义算法和密钥来实现自己的加密算法。 首先,您需要选择合适的加密算法和模式。对称加密算法常见的有AES、DES、3DES等,非对称加密算法常见的有RSA、DSA等。然后,您需要使用Cipher类进行初始化,指定算法和模式,并传入密钥。接下来,您可以使用Cipher类的encrypt方法对数据进行加密,使用decrypt方法进行解密。 在自写加密算法时,需要注意安全性和效率。要确保加密算法的安全性,可以选择已经经过广泛测试和认可的算法。同时,为了提高效率,可以优化算法的实现方式,如使用合适的数据结构和算法细节优化。 使用JCA实现自己的加密算法有一些挑战和注意事项。首先,要了解JCA的使用方法和相关概念,熟悉各种算法的特性和适用场景。其次,要确保代码的可靠性和安全性,避免常见的安全漏洞和攻击。 总结起来,要自写Java加密算法,您可以使用JCA提供的类和接口,在此框架中定义和实现自己的算法。首先选择合适的加密算法和模式,然后使用Cipher类进行初始化并传入密钥,最后使用encrypt和decrypt方法进行加密和解密操作。但在实现时,需注意安全性和效率,并遵循相关的安全编码规范。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Java实现7种常见密码算法](https://blog.csdn.net/fm18771120556/article/details/127460019)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值