使用HMACSHA1算法对数据进行签名(Java版)

 1 import javax.crypto.Mac;
 2 import javax.crypto.SecretKey;
 3 import javax.crypto.spec.SecretKeySpec;
 4
 5 public class HMACSHA1 {
 6
 7     private static final String MAC_NAME = "HmacSHA1";
 8     private static final String ENCODING = "UTF-8";
 9
10     /*
11      * 展示了一个生成指定算法密钥的过程 初始化HMAC密钥
12      * @return
13      * @throws Exception
14      *
15       public static String initMacKey() throws Exception {
16       //得到一个 指定算法密钥的密钥生成器
17       KeyGenerator KeyGenerator keyGenerator =KeyGenerator.getInstance(MAC_NAME);
18       //生成一个密钥
19       SecretKey secretKey =keyGenerator.generateKey();
20       return null;
21       }
22      */
23
24     /**
25      * 使用 HMAC-SHA1 签名方法对对encryptText进行签名
26      * @param encryptText 被签名的字符串
27      * @param encryptKey  密钥
28      * @return
29      * @throws Exception
30      */
31     public static byte[] HmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception
32     {
33         byte[] data=encryptKey.getBytes(ENCODING);
34         //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
35         SecretKey secretKey = new SecretKeySpec(data, MAC_NAME);
36         //生成一个指定 Mac 算法 的 Mac 对象
37         Mac mac = Mac.getInstance(MAC_NAME);
38         //用给定密钥初始化 Mac 对象
39         mac.init(secretKey);
40
41         byte[] text = encryptText.getBytes(ENCODING);
42         //完成 Mac 操作
43         return mac.doFinal(text);
44     }
45 }
时间: 2024-11-24 22:14:26

使用HMACSHA1算法对数据进行签名(Java版)的相关文章

算法练习5---快速排序Java版

基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 例如 3 1 5 2 7 9 3 0 首先以3为基准数,基准数的意思就是以这个数为参考,其他数和它做比较,现在例如有两个人,分别从左边和右边开始找,右边的人要找到比基准数3小的数,左边的人找比基准数3大的数,找到以后进行交换,右边的人先开始找,例如上面的数组,右边的人从0开始找,0比3小

算法练习4---冒泡排序java版

冒泡排序的基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换. 借用嘻哈算法这本书中的一张图 如果有n 个数进行排序,只需将n-1 个数归位,也就是说要进行n-1 趟操作.而"每一趟"都需要从第1 位开始进行相邻两个数的比较,将较小的一个数放在后面,比较完毕后向后挪一位继续比较下面两个相邻数的大小,重复此步骤,直到最后一个尚未归位的

经典算法二分查找循环实现Java版

二分查找 定义 二分查找(Binary Search)又称折半查找,它是一种效率较高的查找方法. 要求 (1)必须采用顺序存储结构 (2)必须按关键字大小有序排列 查找思路 首先将给定值K,与表中中间位置元素的关键字比较,若相等,返回该元素的存储位置:若不等,这所需查找的元素只能在中间数据以外的前半部分或后半部分中.然后在缩小的范围中继续进行同样的查找.如此反复直到找到为止. 适用情况 该查找方法仅适合于线性表的顺序存储结构,不适合链式存储结构,且要求元素按关键字有序排列. 优缺点 虽然二分查找

算法练习3---水仙花数java版

所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身. java程序代码如下: public class ArithTest { public static void main(String[] args) { ArithTest at = new ArithTest(); //打印所有的水仙花数 System.out.println("水仙花数:"); for(int a=100;a<=999;a++){ boolean bl = at.fk(a

算法之动态规划初步(Java版)

概述: 算法的重要性是不言而喻的. 可能是你会不屑于听这样的话,是因为在我们的实际开发中,用到算法的地方真是太少了.对于这一点我并不否认,因为对于一个初级的开发者而言,算法显得太过高深了.如果我们想去实现一个功能,通常的做法就是百度或是Google.这就是为什么会有那么一句调侃之辞:我们不生产代码,我们只是代码的搬运工. 当我们已经完成了初级开发者的这一过程时,我们应该想着怎么去优化自己的代码,从而让自己的代码更加优美,也更显B格. 动规的使用场景: 动态规划是对回溯算法的一种改进. 我们知道回

HMAC-SHA1算法签名及Authorization头认证

使用PHP进行HMAC-SHA1签名,并通过Authorization头认证Deom $app_id = 'id'; $host = "test.abc.com"; $port = "80"; $app_Key = "key"; $app_timestamp = time(); $app_nonce = "8FINtYTUsKbSZGfl".time().rand(10,1000); $uri = "/account

Java使用HMAC-SHA1算法

Java使用HMAC-SHA1算法 String secret = mConsumerSecret + "&" + mOauthToken; SecretKey secretKey = new SecretKeySpec(secret.getBytes("US-ASCII"), "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(secretKey)

RSA算法实现传输数据的签名

在不同服务器或系统之间进行交互时我们往往需要进行身份的认证,以满足安全上的防抵赖和防篡改. 要实现以上要求使用非对称加密算法是目前最理想的方案. 以下是具体的实现: 1. 生成RSA算法私钥和公钥对,用openssl(openssl的安装网上有很多资料,可以自行查看) 生成RSA私钥 openssl>genrsa -out rsa_private_key.pem 1024 生成RSA公钥 openssl>rsa -in rsa_private_key.pem -pubout -out rsa_

微博URL短网址生成算法原理及(java版、php版实现实例)

短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接. 例如:http://t.cn/SzjPjA 短网址服务,可能很多朋友都已经不再陌生,现在大部分微博.手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场.估计很多朋友现在也正在使用. 看过新浪的短连接服务,发现后面主要有6个字符串组成,于是第一个