Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >对象存储签名生成

对象存储签名生成

原创
作者头像
_12291_721
发布于 2021-04-27 09:08:00
发布于 2021-04-27 09:08:00
3.8K0
举报
文章被收录于专栏:官网API实践官网API实践
代码语言:java
AI代码解释
复制
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;


public class Authorization {
    private static final Charset UTF8 = StandardCharsets.UTF_8;;
    private static final String SecretId="";
    private static final String SecretKey="";
    private static final String StartTimestamp = Long.toString(System.currentTimeMillis()/1000L);
    private static final String EndTimestamp = Long.toString(System.currentTimeMillis()/1000L + 30);
    private static final String KeyTime= StartTimestamp + ";" + EndTimestamp;
    public static String HmacSHA1(String key, String msg) throws Exception {
       byte[] data = key.getBytes(UTF8);
       Mac mac = Mac.getInstance("HmacSHA1");
       SecretKeySpec secretKeySpec = new SecretKeySpec(data, mac.getAlgorithm());
       mac.init(secretKeySpec);
       byte[] HmacSha1 = mac.doFinal(msg.getBytes(UTF8));
       StringBuilder stringBuilder = new StringBuilder("");
        for (int i = 0; i < HmacSha1.length; i++) {
            int v = HmacSha1[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }
    public static String HttpString(String HttpMethod, String UriPathname, String HttpParameters, String HttpHeaders)throws Exception{
        return HttpMethod + "\n" + UriPathname + "\n" + HttpParameters + "\n" + HttpHeaders + "\n";
    }
    public static String SHA1(String StringToSign) throws Exception{
        char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
        MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
        messageDigest.update(StringToSign.getBytes(UTF8));
        byte[] md = messageDigest.digest();
        int j = md.length;
        char buf[] = new char[j * 2];
        int k = 0;
        for (int i = 0; i < j; i++) {
            byte byte0 = md[i];
            buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
            buf[k++] = hexDigits[byte0 & 0xf];
        }
        return new String(buf);
    }
    public static String Sign(String HttpMethod, String UriPathname) throws Exception{
        String SignKey =  HmacSHA1(SecretKey, KeyTime);
        String HttpStrings = HttpString(HttpMethod, UriPathname, "", "");
        String StringToSign = "sha1\n"+KeyTime+"\n"+SHA1(HttpStrings)+"\n";
        String Signature = HmacSHA1(SignKey, StringToSign);
        String Authorization = String.format("q-sign-algorithm=%s&q-ak=%s&q-sign-time=%s&q-key-time=%s&q-header-list=%s&q-url-param-list=%s&q-signature=%s", "sha1", SecretId, KeyTime, KeyTime,"","",Signature);
        return Authorization;
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实现一个简单的Flutter/Dart版本的对象存储(COS)SDK
本文中,尝试使用dart实现对象存储SDK,目前只实现了listObject、putObject、deleteObject三个功能,足够覆盖简单的增删查场景了。
2021/09/17
2.5K8
Java工具集-HMacSHA1加解密
代码示例 import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * @program
cwl_java
2020/06/10
2.1K0
【小工匠聊密码学】--消息摘要--HMAC算法
  HMAC是密钥相关的消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
Java小工匠
2018/08/10
1.2K0
【小工匠聊密码学】--消息摘要--HMAC算法
对称加密与非对称加密
优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。
lyb-geek
2022/03/09
2.5K0
Java实现AWS S3 V4 Authorization自定义验证
最近在开发文件存储服务,需要符合s3的协议标准,可以直接接入aws-sdk,本文针对sdk发出请求的鉴权信息进行重新组合再签名验证有效性,sdk版本如下
code2roc
2023/07/19
6350
腾讯会议API - Webhook介绍与简单实现
可以看到,REST API是由用户应用主动向腾讯会议后台发起请求,然后后台进行响应;而Webhook是由特定事件来触发,然后腾讯Webhook服务主动向用户发起请求。例如在配置Webhook时订阅了用户入会事件消息之后,当会议中有人入会时,后台就会给用户配置的Webhook应用发送POST消息。
liquid
2023/08/17
3.1K0
Java加密解密介绍
常用的加密算法总体可以分为两类:单项加密和双向加密,双向加密又分为对称加密和非对称加密,因此主要分析下面三种加密算法:
全栈程序员站长
2022/08/04
1.6K0
Android中常用的加密方式[通俗易懂]
public class DigestUtils { public static String TAG = “DigestUtils”; private static final char[] hexCode = “0123456789ABCDEF”.toCharArray();
全栈程序员站长
2022/08/27
3940
cos 请求签名(Python PHP )
java : 参考:https://github.com/tencentyun/cos-snippets/blob/master/Java/src/test/java/com/qcloud/cssg/GetAuthorization.java
xunzhou
2021/06/15
1.2K1
【玩转腾讯云】万物皆可Serverless之在Flutter中写一个Dart原生腾讯云对象存储插件
比如将用户头像上传存储到自己的对象存储桶中,然后返回文件下载链接保存到本地数据库中,
乂乂又又
2020/04/22
3.4K5
【玩转腾讯云】万物皆可Serverless之在Flutter中写一个Dart原生腾讯云对象存储插件
Java使用AES加密解密
AES加密机制: 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。 这个标准用来替代原先的DES(Data Encryption Standard),已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中
二十三年蝉
2018/08/01
5.1K0
微信支付【代码篇】
接上一篇,领导让我帮忙对接一下微信支付,接到文档之后我一脸懵逼,看了半天之后发现与银行对接大同小异,于是根据微信API要求进行了编码。
简单的程序员
2020/04/18
2.1K0
V3手动鉴权失败之Java篇
腾讯云 API 全新升级 3.0 ,该版本进行了性能优化且全地域部署、支持就近和按地域接入、访问时延下降显著,接口描述更加详细、错误码描述更加全面、SDK增加接口级注释,让您更加方便快捷的使用腾讯云产品。人脸识别、文字识别,语音识别等众多产品均已接入云API 3.0。
周朋伟
2020/12/11
2.1K0
V3手动鉴权失败之Java篇
Java解密解密工具类
JokerDJ
2023/11/27
6500
使用Open API访问CBS接口(不用SDK,java版)
https://console.cloud.tencent.com/cam/capi
wainsun
2023/09/14
4090
使用Open API访问CBS接口(不用SDK,java版)
为 Linux 服务器 SSH 添加 TOTP 动态验证码以及 Java 实现算法
TOTP 基于时间的一次性密码算法(Time-Based One-Time Password)是一种根据预共享的密钥与当前时间计算一次性密码的算法,利用不同设备时间相同的特性,将时间作为特定算法的一部分从而达到无需网络进行安全验证的目的。 该算法有两个输入,一个输出,一个输入是随机生成的密钥,密钥需要被验证方和验证器同时持有,另一个输入即系统时间,通常是 UNIX 时,输出则是两方相同的验证码。一般的验证码有效期为 30 秒,每 30
寒冰hanbings
2021/12/21
1.9K0
为 Linux 服务器 SSH 添加 TOTP 动态验证码以及 Java 实现算法
java接入腾讯云人脸识别服务
首先,你需要在腾讯云官网注册账号,并创建一个人脸识别服务。然后,你需要获取腾讯云的API密钥和API密钥ID。这些信息需要在代码中使用,因此请务必保密。
堕落飞鸟
2023/04/01
13.5K2
易语言生成COS签名
目前腾讯云COS有提供常见编程语言的签名代码DEMO,但是没有使用易语言生成的; 为了方便使用,所以就在某天晚上,用掉了几根头发,编写出了易语言生成COS签名的代码 COS签名使用方法详见:https://cloud.tencent.com/document/product/436/7778#.E7.AD.BE.E5.90.8D.E4.BD.BF.E7.94.A8 核心代码如下 .局部变量 时间值, 日期时间型 .局部变量 初始时间, 日期时间型 .局部变量 签名有效期, 整数型, , , 签名有效期
yjwang
2022/01/23
8.5K2
java微信公众号开发入门(2)--微信官方到本地校验
版权声明:本文为博主原创文章,未经博主允许不得转载。 在上一步准备工作完成以后,我们需要配置 第一步,配置校验工具类 import java.security.MessageDigest; import java.util.Arrays; public class CheckUtil { private static final String token = "changeyourNick"; //改成唯一的字符串 public static boolean check
DencyCheng
2018/11/05
9200
常见的加密算法
前端使用开源CryptoJS (crypto.js) 为 JavaScript加密算法,Github地址(https://github.com/brix/crypto-js)。目前已支持的算法包括:
分母为零
2019/07/04
1.8K0
相关推荐
实现一个简单的Flutter/Dart版本的对象存储(COS)SDK
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档