当前位置: 首页 > news >正文

C# hash签名,哈希签名Sha256

usingSystem.Security.Cryptography;usingSystem.Text;namespaceWebApi_PaddleOCRSharp{publicclassSha256Helper{/// <summary>/// 【无密钥,纯哈希】计算字符串 SHA256 哈希,返回小写十六进制,/// 默认编码:UTF8/// </summary>/// <param name="input">原始字符串</param>/// <returns>64位小写sha256</returns>/// <exception cref="ArgumentNullException">输入为空</exception>publicstaticstringComputeSha256Lower(stringinput){if(input==null)thrownewArgumentNullException(nameof(input));byte[]rawBytes=Encoding.UTF8.GetBytes(input);byte[]hashBytes=ComputeSha256Bytes(rawBytes);returnBitConverter.ToString(hashBytes).Replace("-","").ToLowerInvariant();}/// <summary>/// 【无密钥,纯哈希】计算字符串 SHA256 哈希,返回大写十六进制/// 默认编码:UTF8,/// </summary>publicstaticstringComputeSha256Upper(stringinput){if(input==null)thrownewArgumentNullException(nameof(input));byte[]rawBytes=Encoding.UTF8.GetBytes(input);byte[]hashBytes=ComputeSha256Bytes(rawBytes);returnBitConverter.ToString(hashBytes).Replace("-","");}/// <summary>/// 对字节数组计算SHA256,返回哈希字节数组/// </summary>publicstaticbyte[]ComputeSha256Bytes(byte[]data){if(data==null)thrownewArgumentNullException(nameof(data));// SHA256.Create() 优先使用操作系统硬件加速实现using(SHA256sha256=SHA256.Create()){returnsha256.ComputeHash(data);}}/// <summary>///【无密钥,纯哈希】 重载:自定义编码计算字符串SHA256(小写)/// </summary>publicstaticstringComputeSha256Lower(stringinput,Encodingencoding){if(input==null)thrownewArgumentNullException(nameof(input));if(encoding==null)thrownewArgumentNullException(nameof(encoding));byte[]rawBytes=encoding.GetBytes(input);byte[]hashBytes=ComputeSha256Bytes(rawBytes);returnBitConverter.ToString(hashBytes).Replace("-","").ToLowerInvariant();}/// <summary>/// 【有密钥】HMACSHA256 签名(推荐接口验签!相比普通SHA256更安全)/// </summary>/// <param name="source">待签原文</param>/// <param name="secretKey">密钥</param>/// <param name="upper">大小写</param>/// <returns>签名串</returns>publicstaticstringHmacSha256Sign(stringsource,stringsecretKey,boolupper=false){if(string.IsNullOrEmpty(source))thrownewArgumentNullException(nameof(source));if(string.IsNullOrEmpty(secretKey))thrownewArgumentNullException(nameof(secretKey));byte[]keyBytes=Encoding.UTF8.GetBytes(secretKey);byte[]dataBytes=Encoding.UTF8.GetBytes(source);usingvarhmac=newHMACSHA256(keyBytes);byte[]hashBytes=hmac.ComputeHash(dataBytes);StringBuildersb=newStringBuilder();foreach(varbinhashBytes){sb.Append(b.ToString(upper?"X2":"x2"));}returnsb.ToString();}}}
http://www.jsqmd.com/news/1252091/

相关文章:

  • 多模态RAG技术:让混合文档实现智能检索与生成
  • 移动平均和加权平均有什么区别?数据分析师必懂的平滑技术对比
  • bq40z50-R3 SBS命令与数据闪存配置实战指南
  • YOLOv11在课堂行为检测中的应用与实践
  • 企业AI架构:MCP+LLM+Agent技术融合实践
  • 为什么高性价比排污泵公司信息梳理?多家维度拆解
  • 腾讯WorkBuddy:免安装AI助手与多模型调度解析
  • Evo2基因组建模平台:合成生物学的AI驱动革命
  • 从单线程到高并发:多进程与多线程TCP服务器架构设计与实现
  • 亨得利服务项目及价格查询|完整维修地址与热线权威信息通告(2026年7月最新) - 亨得利官方
  • 食品铝箔封口质检机厂家怎么选?看这几点就够了
  • 代码优先AI智能体开发:从概念到实践
  • 苏州地址挂靠出现经营异常,最快解除流程是什么?
  • 学术写作AI:核心技术架构与应用实践
  • 由时间服务器产生的一个误会(by quqi99)
  • [Git/版本控制] 告别合错分支与遗漏打标噩梦!Git Tag 标签管理与 Merge 错误回滚工程实战
  • HarmonyOS 应用开发《掌上英语》第39篇:页面参数传递从简单字符串到复杂对象的序列化
  • 2026年7月兰州牛肉拉面馆招商/兰州特色牛肉拉面加盟品牌合作怎么联系_甘肃观蘭餐饮管理有限公司 - 品牌宣传支持者
  • 计算机二级WPS表格操作:评分逻辑与考试技巧详解
  • PaddleOCR版面分析数据集制作与优化实战
  • AI代码生成代理的技术架构与多语言实现对比
  • Win11临时文件清理全攻略:释放C盘空间
  • 合同审查的重复劳动,AI一来直接让你解放
  • 苏州小规模企业频繁开票,怎样做好财税风险管控?
  • 智能体与AI大模型入门指南:核心概念与实战路径
  • 计算机二级WPS演示文稿7大核心考点解析与实战技巧
  • 项目经理的核心能力:从计划到有效跟进的跨越
  • 商业级ARPG开发:从领域驱动到数据驱动的工程化实战
  • C++零基础入门实战:从核心语法到项目开发全解析
  • 为技术极客打造的Linux发行版:深度定制与极致掌控