开发者社区> 问答> 正文

oss上传java如何生成signature?

如题:下面代码是php 签明生成方式
<?php
$access_id = '123';
$access_key = '123';
$url='http://xxx-xxx.oss-cn-beijing.aliyuncs.com';//更改成你自己的地址
$policy = '{"expiration": "2120-01-01T12:00:00.000Z","conditions":[{"bucket": "xxx-xxx" },["content-length-range", 0, 104857600]]}';
$policy = base64_encode($policy);
$signature = base64_encode(hash_hmac('sha1', $policy, $access_key, true));//生成认证签名
//signature 签明
?>


java代码如何实现 signature的生成?求大手帮帮忙!!

展开
收起
tb8477572_2012-15516 2015-09-28 17:22:36 8620 0
3 条回答
写回答
取消 提交回答
  • 阿里云对象存储(OSS)开发工程师
    Reoss上传java如何生成signature?
    你可以到官网上下载java的sdk,里面有虽然没有提供PostObject()接口,但是提供了PostObject()中生成签名和policy的例子
    2015-09-28 19:59:16
    赞同 展开评论 打赏
  • Reoss上传java如何生成signature?
    /**
         * base64转码
         *
         * @param st
         * @return
         */
        public static String base64Encode(String st) {

            return new String(Base64.encodeBase64(st.getBytes()));
        }

    /**  
              * 生成签名数据  
              *  
              * @param data 待加密的数据  
              * @param key  加密使用的key  
              * @throws InvalidKeyException  
              * @throws NoSuchAlgorithmException  
              */  
             public static String getSignature(String data,String key) throws Exception{
              byte[] keyBytes=key.getBytes();
                 SecretKeySpec signingKey = new SecretKeySpec(keyBytes, HMAC_SHA1);  
                 Mac mac = Mac.getInstance(HMAC_SHA1);  
                 mac.init(signingKey);  
                 byte[] rawHmac = mac.doFinal(data.getBytes());
                 StringBuilder sb=new StringBuilder();
                 for(byte b:rawHmac){
                  sb.append(byteToHexString(b));
                 }
                 return sb.toString();  
             }
            
             private static String byteToHexString(byte ib){
              char[] Digit={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
              char[] ob=new char[2];
              ob[0]=Digit[(ib>>>4)& 0X0f];
              ob[1]=Digit[ib & 0X0F];
              String s=new String(ob);
              return s;        
             }

    java生成的签明 与php生成的签明不一致。这是啥子情况泥?

    -------------------------

    回3楼xgp的帖子
    文档写的好蛋疼,真心看的不明白。。。。。
    2015-09-28 18:44:58
    赞同 展开评论 打赏
  • 旺旺:nectar2。
    楼主您好,

    将为您的帖子移到合适的版块,希望能得到更快回复喔。
    2015-09-28 18:44:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载