• base64计算


    zjzc01:/root# cat aa.pl 
    use URI::Escape;
    use URI::Escape qw(uri_unescape);
    use MIME::Base64;
    use Digest::HMAC_SHA1;
    $xx="GET&%2F&AccessKeyId%3DZ7bph8ZgNR4oMNVh%26Action%3DDescribeRegions%26Format%3DJSON%26RegionId%3Dregion1%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3DNwDAxvLU6tFE0DVb%26SignatureVersion%3D1.0%26TimeStamp%3D$SDATEX%26Version%3D2014-05-26";
    print "$xx is $xx
    ";
    $str=Digest::HMAC_SHA1::hmac_sha1("$xx",'fQIJzvxOXZuc1AhLxtVMz0q2Nd7zkj&');
    $Signature = encode_base64($str);
    print "$Signature
    ";
    
    
    
    $head='http://ecs.aliyuncs.com/?';
    #+ 替换为%20 =替换为%3d
    $Signature = uri_escape("$Signature");
    print "$Signature is $Signature
    ";
    zjzc01:/root# perl aa.pl 
    $xx is GET&%2F&AccessKeyId%3DZ7bph8ZgNR4oMNVh%26Action%3DDescribeRegions%26Format%3DJSON%26RegionId%3Dregion1%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3DNwDAxvLU6tFE0DVb%26SignatureVersion%3D1.0%26TimeStamp%3D%26Version%3D2014-05-26
    I3GHM2wC+3i40vWpXMRox7AK1WE=
    
    $Signature is I3GHM2wC%2B3i40vWpXMRox7AK1WE%3D%0A
    
    回车是 %0a  
    
    原因是base64计算的时候没有加第2个参数
    
    zjzc01:/root# cat aa.pl 
    use URI::Escape;
    use URI::Escape qw(uri_unescape);
    use MIME::Base64;
    use Digest::HMAC_SHA1;
    $xx="GET&%2F&AccessKeyId%3DZ7bph8ZgNR4oMNVh%26Action%3DDescribeRegions%26Format%3DJSON%26RegionId%3Dregion1%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3DNwDAxvLU6tFE0DVb%26SignatureVersion%3D1.0%26TimeStamp%3D$SDATEX%26Version%3D2014-05-26";
    print "$xx is $xx
    ";
    $str=Digest::HMAC_SHA1::hmac_sha1("$xx",'fQIJzvxOXZuc1AhLxtVMz0q2Nd7zkj&');
    $Signature = encode_base64($str,"");
    print "$Signature
    ";
    
    
    
    $head='http://ecs.aliyuncs.com/?';
    #+ 替换为%20 =替换为%3d
    $Signature = uri_escape("$Signature");
    print "$Signature is $Signature
    ";
    zjzc01:/root# perl aa.pl 
    $xx is GET&%2F&AccessKeyId%3DZ7bph8ZgNR4oMNVh%26Action%3DDescribeRegions%26Format%3DJSON%26RegionId%3Dregion1%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3DNwDAxvLU6tFE0DVb%26SignatureVersion%3D1.0%26TimeStamp%3D%26Version%3D2014-05-26
    I3GHM2wC+3i40vWpXMRox7AK1WE=
    $Signature is I3GHM2wC%2B3i40vWpXMRox7AK1WE%3D
    
           encode_base64($str, $eol);
               Encode data by calling the encode_base64() function.  The first argument is the string to encode.  The second argument is the line-ending sequence to use.  It is optional and defaults to "
    ".  The returned
               encoded string is broken into lines of no more than 76 characters each and it will end with $eol unless it is empty.  Pass an empty string as second argument if you do not want the encoded string to be broken
               into lines.
    		   
    		   编码数据通过调用 encode_base64() 函数,第一个参数是需要编码的字符串。
    		   
    		   第2个参数是行结束,它是可选的 默认是
    o
    		   
    		   返回的编码的字符串被分隔成一行不超过76个字符
    		   
    		   
    		   传递一个空字符串作为第2个参数,如果你不需要把编码的字符串分隔到多行
    		   
    		   
    		   
    		   
    		   
    		   
    		   
    		   
    		   
    		   
    		   

  • 相关阅读:
    TortoiseSVN和VisualSVN-下载地址
    asp.net mvc输出自定义404等错误页面,非302跳转
    IIS7如何显示详细错误信息
    关于IIS7.5下的web.config 404 配置的一些问题
    MVC 错误处理1
    后台获取视图对应的字符串
    HTML5 ArrayBuffer:类型化数组 (二)
    Web 前沿——HTML5 Form Data 对象的使用(转)
    HTML5 File 对象
    HTML5 本地裁剪图片并上传至服务器(转)
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6200417.html
Copyright © 2020-2023  润新知