mymac.java

来自「密码学中的JAVA例子」· Java 代码 · 共 60 行

JAVA
60
字号
import java.io.*; 

import java.security.*; 

import javax.crypto.*; 

import javax.crypto.spec.*; 

public class MyMac 
{ 

	public static void main(String[] args) throws Exception
	{ 

		//这是一个消息摘要串 

		String str="TestString"; 

		//共同的密钥编码,这个可以通过其它算法计算出来 

		byte[] kb=
			{
				11,105,-119,50,4,-105,16,38,-14,-111,21,-95,70,-15,76,-74, 

				67,-88,59,-71,55,-125,104,42}; 

		//获取共同的密钥 

		SecretKeySpec k = new SecretKeySpec(kb,"HMACSHA1"); 

		//获取Mac对象 

		Mac m = Mac.getInstance("HmacSHA1"); 

		m.init(k); 
        /**
		 * 为了产生消息认证码,我们将数据传给mac的update()方法。一旦运行完毕,就可以调用doFinal()来得到消息码
		 */
		m.update(str.getBytes("UTF-8")); 

		byte[] re = m.doFinal();//生成消息码 

		//下面把消息码转换为字符串 

		String result = ""; 

		for(int i=0;i<re.length;i++)
		{ 

			result += Integer.toHexString((0x000000ff&re[i])|0xffffff00).substring(6); 

		} 

		System.out.println(result); 

	} 

} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?