SHA1字符串加密
使用SHA1算法,生成某个字符串的hash值作为该字符串所代表对象的唯一标识;
Demo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks; namespace SHA1Demo
{
class Program
{
static void Main(string[] args)
{
var input_str = "客户@编号";
var output_str = Program.SHA1_Hash(input_str);
Console.Write($"SHA1 Base64String: {output_str}");
Console.WriteLine();
output_str = Program.SHA1(input_str);
Console.Write($"SHA1 BitConverter: {output_str}\n");
output_str = Program.HMACSHA1_Hash(input_str,"test");
Console.Write($"SHA1 HMACSHA1: {output_str}");
Console.ReadLine();
} public static string SHA1(string content)
{
try
{
SHA1 sha1 = new SHA1CryptoServiceProvider();
byte[] bytes_in = UTF8Encoding.UTF8.GetBytes(content);
byte[] bytes_out = sha1.ComputeHash(bytes_in);
sha1.Dispose();
string result = BitConverter.ToString(bytes_out);
result = result.Replace("-", "").ToLower();
return result;
}
catch (Exception ex)
{
throw new Exception("SHA1加密出错:" + ex.Message);
}
} /// <summary>
/// 哈希Sha1加密输出Base64字符
/// </summary>
/// <param name="str_sha1_in"></param>
/// <returns></returns>
public static string SHA1_Hash(string str_sha1_in)
{
SHA1 sha1 = new SHA1CryptoServiceProvider();
byte[] bytes_sha1_in = UTF8Encoding.UTF8.GetBytes(str_sha1_in);
byte[] bytes_sha1_out = sha1.ComputeHash(bytes_sha1_in);
string str_sha1_out = Convert.ToBase64String(bytes_sha1_out);
str_sha1_out = str_sha1_out.Replace("-", ""); return str_sha1_out;
} /// <summary>
/// 哈希sha1加密输出字节数组
/// </summary>
/// <param name="str_sha1_in"></param>
/// <returns></returns>
public static byte[] SHA1_HashBytes(string str_sha1_in)
{
SHA1 sha1 = new SHA1CryptoServiceProvider();
byte[] bytes_sha1_in = UTF8Encoding.UTF8.GetBytes(str_sha1_in);
byte[] bytes_sha1_out = sha1.ComputeHash(bytes_sha1_in);
return bytes_sha1_out;
} public static string HMACSHA1_Hash(string strText,string strKey)
{
HMACSHA1 myHMACSHA1 = new HMACSHA1(Encoding.UTF8.GetBytes(strKey));
byte[] byteText = myHMACSHA1.ComputeHash(Encoding.UTF8.GetBytes(strText));
return System.Convert.ToBase64String(byteText); }
}
}
输出:
SHA1 Base64String: 06YnDCZ3gXWBReR5dHgtY56A438=
SHA1 BitConverter: d3a6270c267781758145e47974782d639e80e37f
SHA1 HMACSHA1: HrVyvnnPgMulvCBaaIP2gQUgJtM=
相关学习参考链接:
https://www.cnblogs.com/fullsail/archive/2013/02/22/2921505.html
https://blog.csdn.net/weixin_38756990/article/details/72177367
SHA1字符串加密的更多相关文章
- ASP.NET 常用的字符串加密
字符串常用的加密有三种 1.MD5加密,这个常用于密码,单向加密,不可解密,有些在线解密的可以解大部份,用代码不能实现,如果不想让人解密,加密后随便截取一段就好了: 2.Base64位加密,通常加密后 ...
- C# 字符串加密解密方法
这个是加密的算法的命名空间,使用加密算法前要引用该程序集 System.Security.Cryptography using System;using System.Data;using Syst ...
- MD5字符串加密
MD5字符串加密 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 132 ...
- 利用javascript对字符串加密
没事利用js写个对字符串加密的方法,基本原理就是先把字符串转化成对应的unicode(用到的方法是charCodeAt()),再把unicode统一减去100(这里加减随便你取多少),把得到的unic ...
- iOS字符串加密至MD5&及获取文件MD5
iOS 字符串加密至MD5 #import <CommonCrypto/CommonDigest.h> + (NSString *) md5:(NSString *)str { const ...
- Labview实现字符串加密
Labview实现字符串加密 对字符串进行加密,规则是每个字母后移5 位 例如A 变为F,b 变为g,x 变为c,y 变为d- 实现效果 后端实现
- Dotfuscator可以实现混淆代码、变量名修改、字符串加密
C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破.使用VS自带的Dotfuscator可以实现混淆代 ...
- 敏感字符串加密处理(PHP实现)
/** * 敏感字符串加密处理 * @param $raw_str 原始字符串 * @param $before 前面保留的显示位数 * @param $after 后面保留的显示位数 * @para ...
- C# 字符串加密解密函数
原文:C# 字符串加密解密函数 using System; using System.Text;using System.Security.Cryptography; using System.IO; ...
- nefu 1116 字符串加密
字符串加密 Problem : 1116 Time Limit : 1000ms Memory Limit : 65536K description 给你一段经过加密的字符串,我们称之为密文,现在请你 ...
随机推荐
- 面试官:来谈谈Vue3的provide和inject实现多级传递的原理
前言 没有看过provide和inject函数源码的小伙伴可能觉得他们实现数据多级传递非常神秘,其实他的源码非常简单,这篇文章欧阳来讲讲provide和inject函数是如何实现数据多级传递的.ps: ...
- Zcmu-1178
思路: 分析题目要求的就是由2,3,5,7单独相乘或者组合相乘的数字. 所以将数字循环起来相乘,之后结果按从大到小地无重复放进数组当中. 学长 #include<set> #include ...
- 案例 | 销讯通加持药企SFE部门效能提升
为了获取更大的市场空间,医药健康行业正迎来一波前所未有的产业升级.尽管不少企业取得了许多成绩,但仍面临诸多挑战. 江苏某制药公司在心脑血管.中枢神经.胃肠内科.心脏科.内分泌科.皮肤科和风湿科等领域均 ...
- DOM元素高度获取踩坑
前情 最近在开发一个需求,需要做一个滚动列表展示当前中奖用户,但是列表每一项高度又不是固定的,每次滚动前需要先获取当前要滚动的块是多高才知道要滚动多少. 坑位 在开发这个滚动列表的时候发现滚着滚着就会 ...
- 解决WSL2无法启动提示“找不到元素”
最近一段时间没有看 docker desktop,忽然想起来打开看看,结果死活启动不了.以前卸载之后,重新安装就好了,同样的方法尝试了很多次还是不太行,重启也不行... 后来想想是不是 wsl 出了问 ...
- Dockerr安装Oracle以及使用DBeaver连接
拉取镜像 pull container-registry.oracle.com/database/free:latest 创建容器 说明一下我现在的最新版本是23 docker run -d --na ...
- server.error.include-message
使用的thymeleaf模板引擎,默认前端无法获取message和exception 想要在前端获取到message和exception,配置一下配置 server.error.include-exc ...
- 【原创】利用gitlab多项目自动部署到多个网站目录,自动同步更新,不用插件,重写钩子
原创内容,分享请保留链接. 0.首先在服务器安装gitlab,网上一堆过程省略 1.建几个空仓库admin.web.xxxx等(1个仓库也行).确保每个仓库名称和网站名称要有一致性,比如仓库叫admi ...
- Qt/C++音视频开发49-多级连保存和推流设计(同时保存到多个文件/推流到多个平台)
一.前言 近期遇到个用户需要多级联的保存和推流,在ffmpegsave多线程保存类中实现这个功能,越简单越好,就是在推流的同时,能够开启自动转储功能,一边推流的同时一边录像保存到本地视频文件.最初设想 ...
- Qt开发经验小技巧121-130
QLineEdit除了单纯的文本框以外,还可以做很多特殊的处理用途. 限制输入只能输入IP地址. 限制输入范围,强烈推荐使用 QRegExpValidator 正则表达式来处理. //正在表达式限制输 ...