import java.io.UnsupportedEncodingException;

import java.security.PrivateKey;

import java.security.SignatureException;

import org.apache.commons.codec.digest.DigestUtils;

/**

* MD5签名处理核心文件

* */

public class MD5 {

/**

* 签名字符串

*

* @param text

*            需要签名的字符串

* @param key

*            密钥

* @param input_charset

*            编码格式

* @return 签名结果

*/

public static String sign(String text, String key, String charset) throws Exception {

text = text + key;

return DigestUtils.md5Hex(getContentBytes(text, charset));

}

/**

* 签名字符串

*

* @param text

*            需要签名的字符串

* @param key

*            密钥

* @param input_charset

*            编码格式

* @return 签名结果

* @deprecated 无替代方法

*/

public static String sign(String text, PrivateKey key, String charset) throws Exception {

throw new UnsupportedOperationException();

}

/**

* 签名字符串

*

* @param text

*            需要签名的字符串

* @param sign

*            签名结果

* @param key

*            密钥

* @param input_charset

*            编码格式

* @return 签名结果

*/

public static boolean verify(String text, String sign, String key, String charset)

throws Exception {

text = text + key;

String mysign = DigestUtils.md5Hex(getContentBytes(text, charset));

if (mysign.equals(sign)) {

return true;

} else {

return false;

}

}

/**

* @param content

* @param charset

* @return

* @throws SignatureException

* @throws UnsupportedEncodingException

*/

private static byte[] getContentBytes(String content, String charset) {

if (charset == null || "".equals(charset)) {

return content.getBytes();

}

try {

return content.getBytes(charset);

} catch (UnsupportedEncodingException e) {

throw new RuntimeException("签名过程中出现错误,指定的编码集不对,您目前指定的编码集是:" + charset);

}

}

}

MD5(3)的更多相关文章

  1. Bugku-CTF加密篇之这不是md5(666c61677b616537333538376261353662616566357d)

    这不是md5 666c61677b616537333538376261353662616566357d  

  2. 新技能 get —— 如何校验 md5(windows)

    我们在某资源网站上下载完成指定文件后,尤其是一些下载所需较高时长的大型文件,如何检验下载的文件是否完好,也即如何保证和原始网站上的资源一样.此时就要用到检验码的机制,一般文件的下载界面,通常都会给出此 ...

  3. 来自牛逼哥的阴间MD5(web)

    这个web题目是来自队里面牛逼哥的题目,审计源码, 看到这两个参数,前面的a和b就是直接输出数字,再看下面的,需要弱比较的输出一个c,要求应该是需要一个加密之前是一个0e开头的字符串,加密之后还是0e ...

  4. 网络编程基础【day09】:socket解决粘包问题之MD5(八)

    本节内容 1.概述 2.代码实现 一.概述 上一篇博客讲到的用MD5来校验还是用的之前解决粘包的方法,就是客户端发送一个请求,等待服务端的确认的这样的一个笨方法.下面我们用另外一种方法:就是客户端已经 ...

  5. MD5(2)

    /************************************************ MD5 算法的Java Bean @author:Topcat Tuppin Last Modifi ...

  6. 亲历H5移动端游戏微信支付接入及那些坑(三)——支付接入

    终于到接入支付了,小小的一个微信支付,居然也写了3篇,好长,好累. 接入环境 对接入环境,前端的话,应该是以js为主吧,也有可能是,PHP,Java,C++,或者C#都可以.为什么在此特意提一下接入环 ...

  7. HTTP认证之摘要认证——Digest(一)

    导航 HTTP认证之基本认证--Basic(一) HTTP认证之基本认证--Basic(二) HTTP认证之摘要认证--Digest(一) HTTP认证之摘要认证--Digest(二) 一.概述 Di ...

  8. Android OkHttp与物理存储介质缓存:DiskLruCache(2)

     Android OkHttp与物理存储介质缓存:DiskLruCache(2) 本文在附录文章8,9的基础之上,把Android OkHttp与DiskLruCache相结合,综合此两项技术,实 ...

  9. 网络测试技术——802.1X_MD5认证(下篇)

    上篇我们讲到802.1X_MD5的简介.认证过程.测试组网以及测试环境准备,本期我们将为大家带来测试的详细步骤: 六.测试仪配置 1.占用端口 端口功能 (1)端口1用来模拟DOT1X和发送流量 (2 ...

随机推荐

  1. MySQL/MariaDB数据库的mysqldump工具备份还原实战

    MySQL/MariaDB数据库的mysqldump工具备份还原实战 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.mysqldump概述 1>.逻辑备份工具 mysq ...

  2. Pthon魔术方法(Magic Methods)-运算符重载

    Pthon魔术方法(Magic Methods)-运算符重载 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Python运算符对应的魔术方法 1>.比较运算符 <: ...

  3. python+正则提取+ip代理爬取糗事百科文字信息

    很多网站都有反爬措施,最常见的就是封ip,请求次数过多服务器会拒绝连接,如图: 在程序中设置一个代理ip,可有效的解决这种问题,代码如下: # 需要的库 import requests import ...

  4. SQL中and和or的区别是?

    今天有这样得一个需求,如果登陆人是客服的话,会查询订单是’该客服’以及还没有匹配客服的,刚开始想的是直接在sql语句上拼写  or  assigned_id is null  的,测试了一下发现这样的 ...

  5. samba服务器的搭建和用户权限,文件夹权限设置

    一.简介:samba服务是基于netbios  安装: 通过yum安装 [root@localhost ~]# yum install samba samba-client samba-swat 查看 ...

  6. Navicat 的使用 —— 快捷键

    名称 功能 备注 Ctrl+Q 打开查询窗口   Ctrl+/  注释sql语句   Ctrl+R  运行查询窗口的sql语句   Ctrl+Shift+R 只运行选中的sql语句   F6  打开一 ...

  7. 【Selenium-WebDriver实战篇】selenium之使用Tess4J进行验证码图片识别内容

    ==================================================================================================== ...

  8. template_constructor_function

    #include <iostream> using namespace std; template <class T> class MyClass{ public: templ ...

  9. STM32启动代码详细分析

    最近需要学习iap的功能,因此离不开stm32的启动代码的分析,以前看了很多遍,都看不懂,读书百遍,其义自见,因此我有看了一遍,下面的文章,挺好的,因此转载: 在上电复位后,我们都知道会先运行启动代码 ...

  10. 题解 UVa11752

    题目大意 输出所有小于 \(2^{64}-1\) 的正整数 \(n\), 使得 \(\exists p, q, a, b\in \mathbb{N+}, p\neq q\rightarrow a^p= ...