java-参考支付宝加密方式

package com.util;

import java.security.MessageDigest;
import java.util.Map;
import java.util.TreeMap;

import com.config.ConstantConfiguer;
import com.exp.RunException;

public class EncryptUtils {
	public static String getSign(Map<String, String> map) {
		String sign = "";
		if (Helper.isNull(map)) {
			throw new RunException("encrypt data is empty");
		}
		TreeMap<String, String> treeMap = new TreeMap<String, String>();
		treeMap.putAll(map);
		treeMap.put("privateKey", "Key" );
		StringBuffer buffer = new StringBuffer();
		for (Map.Entry<String, String> entry : treeMap.entrySet()) {
			buffer.append(entry.getKey()).append("=").append(entry.getValue())
					.append("&");
		}
		int length = buffer.length();
		buffer.delete(length - 1, length);
		sign = SHA1.sha(buffer.toString()).toLowerCase();
		return sign;
	}

	/**
	 * 加密字符串
	 */
	public static String getSign(String txt) {
		return getSign(txt, "HelloWord" );
	}

	public static String getSign(String txt, String key) {
		if (Helper.isNull(txt)) {
			throw new RunException("encrypt data is empty");
		}
		String sign = null;
		txt = txt + "-" + key;
		sign = SHA1.sha(txt).toLowerCase();
		return sign;
	}
}

class SHA1 {
	public static void main(String[] args) {
		System.out.println(sha(""));
	}

	public static String md5(String inputText) {
		return encrypt(inputText, "md5");
	}

	public static String sha(String inputText) {
		return encrypt(inputText, "sha-1");
	}

	private static String encrypt(String inputText, String algorithmName) {
		inputText = Helper.checkNull(inputText);
		if (algorithmName == null || "".equals(algorithmName.trim())) {
			algorithmName = "md5";
		}
		String encryptText = null;
		try {
			MessageDigest m = MessageDigest.getInstance(algorithmName);
			m.update(inputText.getBytes("UTF8"));
			byte s[] = m.digest();
			return hex(s);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return encryptText;
	}

	private static String hex(byte[] arr) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < arr.length; ++i) {
			sb.append(Integer.toHexString((arr[i] & 0xFF) | 0x100).substring(1,
					3));
		}
		return sb.toString();
	}
}

java-参考支付宝加密方式

时间: 2024-10-01 05:17:11

java-参考支付宝加密方式的相关文章

java中常用的加密方式

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些资料将加密直接分为对称加密和非对称加密). 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文.而单向加密只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算是加密的一种,应该算是摘要算法吧.具体区分可以参考: (本人解释不清呢 -- ) http://secur

java加密方式

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些资料将加密直接分为对称加密和非对称加密). 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文.而单向加密只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算是加密的一种,应该算是摘要算法吧.具体区分可以参考: (本人解释不清呢 …… ) http://secur

《Java知识应用》Java加密方式(MD5)详解

1. 应用 使用MD5加密 因为:因为MD5的不可逆性,也可以保证你的key 是安全的,黑客无法通过原文和密文知晓你的key. 案例: import java.math.BigInteger; import java.security.MessageDigest; public class MD5Util{ /** * 使用MD5加密 * @param plainText * @return */ public static String encryptionByMD5(String plain

关于Objective-c和Java下DES加密保持一致的方式

转载自:http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html 最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,登录的密码要用DES加密,服务器是用Java开发的,客户端要同时支持多平台(Android.iOS),在处理iOS的DES加密的时候遇到了一些问题,起初怎么调都调不成和Android端生成的密文相同.最终一个忽然的想法让我找到了问题的所在,现在将代码总结一下,以备自己以后查阅. 首先,Java

从支付宝插件无提示导入根证书带来的安全隐患说开去:谈谈HTTPS的加密方式

众所周知在12306购票,官方说明需要导入根证书,这算是良心的了.其实你安装了支付宝插件,就会被不知情的导入了某些[哔]的根证书,而这会带来一些安全隐患:提升遭遇中间人攻击的可能性:在你完全不知情,以为自己还在享受这HTTPS带来的安全保护的情况下,将未加密的信息完全暴露给第三方(比如GFW).而根证书是什么?为什么可能导入一个证书就可能会遭到中间人攻击的?我们从头说开去~ 一.基本概念 加密: 未加密信息:明文x 加密后信息:密文y 明文到密文之间的转换关系:y=f(x),而解密则是x=f -

PHP对接java的AES/ECB/PKCS5Padding加密方式

因项目需要,要和一家保险公司对接调用API,我公司是PHP后台,保险公司是java后台,中间的数据传输就避免不了要加密.解密了,目前通行的加密AES比较推荐. 对接的过程中,就难免要翻山越水的了, 下面是我对接公司的加密说明: 一定要屡清楚自己的加密方式,否则一个加密模式ECB.CBC的差别,结果就千差万别的. 附上最终能使用的代码: <?php class Security { public static function encrypt($input, $key) { $size = mcr

JAVA实现AES加密

Java实现AES加密 1. 因子 上次介绍了<JAVA实现AES加密>,中间提到近些年DES使用越来越少,原因就在于其使用56位密钥,比较容易被破解,近些年来逐渐被AES替代,AES已经变成目前对称加密中最流行算法之一:AES可以使用128.192.和256位密钥,并且用128位分组加密和解密数据.本文就简单介绍如何通过JAVA实现AES加密. 2. JAVA实现 闲话少许,掠过AES加密原理及算法,关于这些直接搜索专业网站吧,我们直接看JAVA的具体实现. 2.1 加密 代码有详细解释,不

Java实现MD5加密及解密的代码实例分享

链接:http://www.jb51.net/article/86027.htm Java实现MD5加密及解密的代码实例分享 作者:厦门大学陈黎栋 字体:[增加 减小] 类型:转载 时间:2016-06-07我要评论 如果对安全性的需求不是太高,MD5仍是使用非常方便和普及的加密方式,比如Java中自带的MessageDigest类就提供了支持,这里就为大家带来Java实现MD5加密及解密的代码实例分享: 基础:MessageDigest类的使用 其实要在Java中完成MD5加密,Message

使用JAVA调用KRPANO加密XML

KRPano自带的命令行工具krpanotools可以加密XML,具体的参数说明如下语法: krpanotools32.exe encrypt [OPTIONS] inputfiles inputfiles 参数可以是任意个数的文件 (支持*) 选项:-h5 - 使用HTML5兼容的加密方式-bin - 使用仅支持Flash的加密方式-p - 使用公共密钥加密-z - 加密并压缩文件-ow - 覆盖源文件-bk - 覆盖源文件并备份源文件-in=# - 手动设置待加密文件路径-out=# - 手