加解密---消息摘要算法

1、概述

    消息摘要算法特征:加密过程不需要秘钥、加密后的数据无法被解密

2、消息摘要算法

    1.1  MD(Message Digest)

        MD家族(128位摘要信息)

        

package com.exiuge.mytest;

import org.apache.commons.codec.binary.Hex;
import java.security.MessageDigest;

public class JdkMD5 {

    private static String src="hello,rose";

    public static void main(String[] args){
        enDeCode(src);
    }

    public static void enDeCode(String src){
        try {
            MessageDigest messageDigest=MessageDigest.getInstance("MD5");
            byte[] desBytes=messageDigest.digest(src.getBytes());
            System.out.println(Hex.encodeHexString(desBytes));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

package com.exiuge.mytest;

import org.bouncycastle.crypto.Digest;import org.bouncycastle.crypto.digests.MD4Digest;import org.bouncycastle.jce.provider.BouncyCastleProvider;import org.bouncycastle.util.encoders.Hex;import java.security.MessageDigest;import java.security.Security;

public class BouncyCastleMD4 {    private static String src="hello,rose";

public static void main(String[] args){        enDeCode(src);    }

public static void enDeCode(String src){        try {            //第一种方式            Digest digest =new MD4Digest();            digest.update(src.getBytes(),0,src.getBytes().length);            byte[] md4Bytes=new byte[digest.getDigestSize()];            digest.doFinal(md4Bytes,0);            System.out.println(Hex.toHexString(md4Bytes));

//第二种方式            Security.addProvider(new BouncyCastleProvider());            MessageDigest messageDigest=MessageDigest.getInstance("MD4");            byte[] md44Bytes=messageDigest.digest(src.getBytes());            System.out.println(Hex.toHexString(md44Bytes));        }catch (Exception e){            e.printStackTrace();        }    }}
package com.exiuge.mytest;

import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.MD5Digest;
import org.bouncycastle.util.encoders.Hex;

public class BouncyCastleMD5 {
    private static String src="hello,rose";

    public static void main(String[] args){
        enDeCode(src);
    }

    public static void enDeCode(String src){
        try {
            Digest digest =new MD5Digest();
            digest.update(src.getBytes(),0,src.getBytes().length);
            byte[] md5Bytes=new byte[digest.getDigestSize()];
            digest.doFinal(md5Bytes,0);
            System.out.println(Hex.toHexString(md5Bytes));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

    1.2  SHA(Secure Hash Algorithm)

    1.3  MAC(Message Authentication Code)

原文地址:https://www.cnblogs.com/anpeiyong/p/10406369.html

时间: 2024-10-31 07:48:12

加解密---消息摘要算法的相关文章

微信公众平台消息体加解密实现

一.消息体加解密 微信公众平台在配置服务器时,提供了3种加解密的模式供开发者选择,即明文模式.兼容模式.安全模式,选择兼容模式和安全模式前,需在开发者中心填写消息加解密密钥EncodingAESKey. 明文模式:维持现有模式,没有适配加解密新特性,消息体明文收发,默认设置为明文模式 兼容模式:公众平台发送消息内容将同时包括明文和密文,消息包长度增加到原来的3倍左右:公众号回复明文或密文均可,不影响现有消息收发:开发者可在此模式下进行调试 安全模式(推荐):公众平台发送消息体的内容只含有密文,公

【PHP】微信开放平台---消息加解密-php7.1 使用openssl代替Mcrypt

1.问题 微信开发小程序消息加解密,官方给出的dome中使用正常,最近升级了7.1发现接收消息不能解密了,最后查了日志又查了各种资料发现 Mcrypt 函数php7.1已经被废弃: 2.解决方式 在Prpcrypt类中使用openssl代替Mcrypt 官方代码: /** * 对密文进行解密 * @param string $encrypted 需要解密的密文 * @return string 解密得到的明文 */ public function decrypt($encrypted, $app

[号外]微信公众平台开发---消息体签名及加解密

离刚开始做微信开发到现在已经两个月了,因为被分配了另外一个任务,所以微信的开发就先放到了一遍. 在小公司便是如此,只有自己一个人做开发,所以哪里需要就要先转到哪一块.其实想想自己也没什么太好的理由说留在这个公司,想想也就是工作比较放松点,老板人还可以,项目上也催的不紧,孩子还小家里有点事了可以随时请假回家,这次也是家里父亲和小孩都住院了请了半个月假刚过来. 闲话不多说,先说下微信开发的博客,微信开发也算完成了一部分,因为没有完成,所以之前的『微信公众平台开发(一)---接口介绍及配置』起了个头便

C#微信公众号开发系列教程三(消息体签名及加解密)

  C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南)    距离上一篇博文已经半个月了,本来打算每两天更新一次的,但可怜苦逼码农无日无夜的加班.第一篇博文发表后,博文视点的编辑就找到我,问我想不想出版这个系列,我当时瞬间就想到了王大锤的独白,想想真的是有点小激动,后面按照那边的要求,提交了申请书,也提交了目录,可惜文笔不行,再加上最近太忙,样稿一直没有给他,感觉挺愧疚了.真心希望能帮一下迷茫的

使用delphi+intraweb进行微信开发4—微信消息加解密

在上一讲当中我做了个简单的微信文本消息回显应用,当时是以微信明文方式实现的,其实微信推荐的是消息应该加密传输以增加安全性,所以这讲说说微信消息的加解密. 在微信的帮助页面上可以下载微信消息加解密的例程,可惜的是没有Delphi语言的示例,网上搜索一番,没有人贡献出写好的Delphi版的微信加解密算法单元,好在有官方示例的C#版的,那就按照C#的改一个吧. 微信消息是以AES算法进行的加密处理,而遗憾的是Delphi并没有内置的AES算法单元,必须找第三方实现的,不过一般第三方实现的算法都因为种种

微信开发(五)微信消息加解密 (EncodingAESKey)

div#cpmenu {height:200px;float:left;} div#cpcontent {height:200px;width:150px;float:left;} 文章作者:松阳 原文链接:http://blog.csdn.net/fansongy/article/details/44005301 消息体加密 随着微信服务开发在越来越多的领域应用,应用的安全性逐渐被重视起来.本文主要阐述如何为微信的消息加密的原理与Java版本的实现. 原理 做过微信开发的朋友们都知道,微信使用

微信消息体签名及加解密功能详细解析以及.net实现

原文:微信消息体签名及加解密功能详细解析以及.net实现 前言 微信消息体签名及加密功能已上线,明文传输确实存在安全风险,鉴于微信的用户范围使用之广泛,必定会成为众矢之的.所以大家还是尽快接入安全模式为好.仔细阅读官方接入指南,发现这次安全升级只是涉及到用户在微信对话窗口中与公众好消息交互,所以此次升级还是比较简单的.下面为大家一一道来. 一.功能解析 微信消息体签名及加密功能已上线,出于安全考虑,强烈建议您尽快接入消息加密功能,消除安全风险.详见公告.公众平台接口调试工具已经全面支持消息体加密

微信公众平台消息体签名及加解密实例(Java)

前言: 最近在研究微信公众平台的开发,玩得不亦乐乎.基本的回复功能已经实现了,而且回复用到了图灵机器人的接口.其实图灵机器人已经有微信接口可以直接调用.如果项目的需要,想要做个性化需求的话,用这种方式是行不通的.我现在的解决方案是,我开发的应用A作为中间层,连接微信接口与图灵机器人接口.有点扯远了,如题,微信官方为了更高的安全性,10月份推出了消息体签名验证.网上关于此项的实例不多,其实根据官方的例子,重新封装一下,就可以了. 一.准备工作: 1.已申请了相关的订阅号或者服务号(可以用虚拟器,具

微信公众号开发教程[005]-消息管理-消息加解密

一.配置公众号消息加解密方式 在公众号官方管理后台->开发->基本配置->修改配置上有3种方式,如下: 其中,EncodingAESKey可以随机生成. 加解密方式说明: 1).明文模式:微信服务器向公众号服务器(即我们要处理的http://szuzsq.tunnel.qydev.com/weixin/index.php)发送的xml结构是原始的,没有加密.如下: <xml> <ToUserName><![CDATA[gh_733c42e0aee9]]>