C# HMAC_SHA1加密

摘要:
要加密的原始字符串<varenText=newStringBuilder();要加密的原始字符串<paramname=“key”>私钥<byte[]hashBytes=hmacsha1.ComputeHash(dataBuffer);returnConvert.ToBase64String(hashBytes);

hmacsha1在很多签名计算中都很常用了,这里对两种可能返回的字符串类型做了分类 
一种是直接返回字符串,一种是baset64后返回 
需要看第三方对接文档中是否有特别说明,调试时如果报错,要比对串的内容看对方是否做了base64

#region HMACSHA1加密  将二进制数据直接转为字符串返回
        /// <summary>
        /// HMACSHA1加密
        /// </summary>
        /// <param name="text">要加密的原串</param>
        ///<param name="key">私钥</param>
        /// <returns></returns>
        public static string HMACSHA1Text(string text,string key)
        {
            //HMACSHA1加密
            HMACSHA1 hmacsha1 = new HMACSHA1();
            hmacsha1.Key = System.Text.Encoding.UTF8.GetBytes(key);

            byte[] dataBuffer = System.Text.Encoding.UTF8.GetBytes(text);
            byte[] hashBytes = hmacsha1.ComputeHash(dataBuffer);

            var enText = new StringBuilder();
            foreach (byte iByte in hashBytes)
            {
                enText.AppendFormat("{0:x2}", iByte);
            }
            return enText.ToString();
            
        }
        #endregion
#region HMACSHA1加密  对二进制数据转Base64后再返回
        /// <summary>
        /// HMACSHA1加密
        /// </summary>
        /// <param name="text">要加密的原串</param>
        ///<param name="key">私钥</param>
        /// <returns></returns>
        public static string HMACSHA1Text(string text,string key)
        {
            //HMACSHA1加密
            HMACSHA1 hmacsha1 = new HMACSHA1();
            hmacsha1.Key = System.Text.Encoding.UTF8.GetBytes(key);

            byte[] dataBuffer = System.Text.Encoding.UTF8.GetBytes(text);
            byte[] hashBytes = hmacsha1.ComputeHash(dataBuffer);
            
            return Convert.ToBase64String(hashBytes);
            
        }
        #endregion

免责声明:文章转载自《C# HMAC_SHA1加密》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇GIS小知识博客园自定义签名信息下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

处理 EF 并发其实就这么简单

    最近项目有点闲,终于可以了解点自己想了解的了,以前听同事讲面试的经历总会被问到“如何处理高并发大数据” 乍一听感觉这东西好像很有学问的样子,于是并发这个词在脑海里留深刻印像,而且在自己心中的技术地位也提高很多,也导致了解并发相关的知识时,也带着思想负担,总以为很难懂,程序员或许都是这样,在自己不懂的技术领域,别人说一个很简单的技术,给他的感觉都是很...

Docker容器数据卷[4]

 是什么 先来看看Docker的理念: 将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 容器之间希望有可能共享数据 Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了。 为了能保存数据在docker中我们使用卷...

java字符串比较是否都可直接使用==?

java字符串比较,两个字符串相不相等,直接用==来判断可以吗?或者判断两个字符串不相等,直接用!=? 不能 两个对象进行比较,如果使用==符号,那么比较的是这两个对象的“引用”(类似C语言中指针的概念)。字符串比较,通常情况下比较的是字符串的值而非引用,不同的“引用”是可以对应相同值的,如果这时候用==比较,得出的结论是不相等,但是实际上它们的值是相等的...

安装phpldapadmin

1. 安装软件 [root@ ~]# yum -y install epel-release [root@ ~]# yum install -y phpldapadmin 2. 配置phpldapadmin [root@ ~]# vi /etc/httpd/conf.d/phpldapadmin.conf # # Web-based tool for...

将 Spring boot 项目打成可执行Jar包,及相关注意事项(main-class、缺少 xsd、重复打包依赖)

最近在看 spring boot 的东西,觉得很方便,很好用。对于一个简单的REST服务,都不要自己部署Tomcat了,直接在 IDE 里 run 一个包含 main 函数的主类就可以了。 但是,转念一想,到了真正需要部署应用的时候,不可能通过 IDE 去部署啊。那有没有办法将 spring boot 的项目打包成一个可执行的 jar 包,然后通过 ja...

Element-ui局部添加loading效果

项目:Vue+element-ui 在一个表格数据加载时,因为需要连接其它东西,所以后台接口返回数据需要较长时间,因此添加局部Loading效果,增加用户体验度, 最开始使用下面代码,直接放到<el-table>中,测试时遇到问题 element-loading-spinner="el-icon-loading" :element-loadin...