C# Winform教程(一):MD5加密

news2025/1/15 12:55:13

1、介绍

在C#中,MD5(Message Digest Algorithm 5)是一种常用的哈希函数,用于将任意长度的数据转换为固定长度的哈希值(通常是128位)。MD5广泛用于校验数据完整性、密码存储等领域。

2、示例

创建MD5加密方法:GetMD5

public static string GetMD5(string str)
        {
            //创建MD5对象
            MD5 md5 = MD5.Create();
            //开始加密,需要将字符串转换成字节数组
            byte[] buffer = Encoding.GetEncoding("GBK").GetBytes(str);
            //返回一个加密好的字节数组
            byte[] bufferMD5 = md5.ComputeHash(buffer);
            //将返回的字节数组转换成字符串
            #region 字节数组转换成字符串的方法
            //字节数组变成字符串:1\将字节数组中每个元素按照指定的编码格式解析成字符串
            //                     2\直接将数组toString()
            //                      3\将字节数组中的每一个元素toString()
            #endregion
            //我们使用的是第三种
            string str2 = "";
            for (int i = 0; i < bufferMD5.Length; i++)
            {
                str2 += bufferMD5[i].ToString("x2");
            }
            return str2;
        }

主函数Main调用函数

 static void Main(string[] args)
        {
            //202cb962ac59075b964b07152d234b70(16进制的)  123
            //3244185981728979115075721453575112(10进制的) str2 += bufferMD5[i].ToString();
            //202CB962AC5975B964B7152D234B70   str2 += bufferMD5[i].ToString("x");
            //202cb962ac59075b964b07152d234b70 str2 += bufferMD5[i].ToString("x2");加上x2直接转换成16进制的
            //ToString()里面的参数就是一个格式的问题,例如下面的加上c就是转换成金钱的格式
            string s = GetMD5("123");
            Console.WriteLine(s);

            //double n = 123.456;
            //Console.WriteLine(n.ToString("c"));
            Console.ReadKey();
        }

运行结果
在这里插入图片描述

注意:
在这个例子中,GetMD5方法接受一个字符串作为输入,将其转换为字节数组,然后使用MD5类计算MD5哈希值。最后,将哈希值以十六进制字符串的形式返回。

需要注意的是,MD5虽然在过去被广泛使用,但由于其容易受到碰撞攻击(collision attacks)的影响,现在已经不再被推荐用于安全性要求较高的场景。在安全领域,推荐使用更强大的哈希函数,如SHA-256SHA-3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1340875.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安卓无法下载gradle或者下载gradle只有几十k的时候怎么办

简单说明&#xff1a;检查项目根目录的build.gradle文件&#xff0c;新版本的检查setting.gradle文件&#xff0c;看看repositories中有没有mavenCentral()&#xff0c;没有的话&#xff0c;加上&#xff0c;放在前面&#xff0c;把阿里的镜像也放上maven { url ‘https://mave…

laravel5.8中实现验证码组件的安装和验证

本篇文章主要讲解使用laravel5.8自带的验证码库实现验证码验证的效果教程。通过本教程你可以快速接入到自己的项目中开发相应的验证功能。 作者&#xff1a;任聪聪 (rccblogs.com) 日期&#xff1a;2023年12月17日 实际效果 安装步骤 步骤一、输入命令 composer require mews…

java freemarker 动态生成excel文件

好久木有更新啦 抓住2023的小尾巴 浅浅更新一下吧~ 最近做了一个动态生成excel的功能&#xff0c;这里记录下部分功能&#xff0c;主要用到的是freemarker框架&#xff0c;spring就有带&#xff0c;我起的demo载入了一下freemarker的jar包 一、创建模板 首先可以创建一个e…

MySQL进阶之(一)逻辑架构

一、逻辑架构 1.1 逻辑架构剖析1.1.1 连接层1.1.2 服务层01、基础服务组件02、SQL Interface&#xff1a;SQL 接口03、Parser&#xff1a;解析器04、Optimizer&#xff1a;查询优化器05、Caches & Buffers&#xff1a; 查询缓存组件 1.1.3 引擎层1.1.4 存储层1.1.5 总结 1.…

【JavaEE】多线程(6) -- 定时器的使用及实现

目录 定时器是什么 标准库中的定时器的使用 实现定时器 定时器是什么 Java中的定时器是一种机制&#xff0c;用于在预定时间执行某个任务。它允许开发人员在指定的时间间隔内重复执行任务&#xff0c;或在指定的延迟之后执行任务。定时器是Java提供的一种方便的工具&#xf…

【没有哪个港口是永远的停留~论文简读】HRNet+OCR

一、Deep High-Resolution Representation Learning for Human Pose Estimation &#xff08;HRNet&#xff09; 论文&#xff1a;https://arxiv.org/pdf/1902.09212.pdf 代码&#xff1a;https://github.com/leoxiaobin/deep-high-resolution-net.pytorch 二、Deep high-res…

JAVA——JDBC学习

视频连接&#xff1a;https://www.bilibili.com/video/BV1sK411B71e/?spm_id_from333.337.search-card.all.click&vd_source619f8ed6df662d99db4b3673d1d3ddcb 《视频讲解很详细&#xff01;&#xff01;推荐》 JDBC&#xff08;Java DataBase Connectivity Java数据库连…

并行进位加法器

前言 在文章逻辑运算加法器中&#xff0c;介绍了两种加法运算方式&#xff0c;串行进位加法器和进位选择加法器&#xff0c;我们给出了逻辑门的实现并给出了C语言描述&#xff0c;本篇文章介绍另外一种加法计算方法&#xff1a;并行进位加法器 写在前面 使用 ⨁ \bigoplus ⨁…

rime中州韵 symbols.custom.yaml 配置

今天我们所做的配置&#xff0c;将实现扩展符号的输入效果&#xff0c;如下&#x1f447;&#xff1a; 基础扩展符号的配置 要实现输入法能够输入扩展的符号&#xff0c;我们需要在输入方案中引入扩展符号集。 如果你使用的输入方案是 wubi_pinyin.schema.yaml&#xff0c;…

计算机中找不到vcruntime140.dll无法启动此程序怎么解决?

无法继续执行代码&#xff0c;因为找不到vcruntime140.dll”。那么&#xff0c;vcruntime140.dll是什么文件&#xff1f;它的作用是什么&#xff1f;当它丢失时会对电脑产生什么影响&#xff1f;本文将为您详细介绍vcruntime140.dll文件的相关知识&#xff0c;并提供五种解决vc…

Rhinos各版本安装指南

下载链接 https://pan.baidu.com/s/1L5qeUPMW32d7zR-GlVVZIw?pwd0531 温馨提示&#xff1a;若您下载的安装包与该安装步骤不同&#xff0c;说明您使用的是之前被淘汰的安装包&#xff0c;请通过该页面的下载链接重新下载。 1.鼠标右击【Rhino8.1(64bit)】压缩包&#xff08…

VuePress、VuePress-theme-hope 搭建个人博客 1【快速上手】 —— 防止踩坑篇

vuePress官网地址 &#x1f449; 首页 | VuePress 手动安装 这一章节会帮助你从头搭建一个简单的 VuePress 文档网站。如果你想在一个现有项目中使用 VuePress 管理文档&#xff0c;从步骤 3 开始。 步骤 1: 创建并进入一个新目录 mkdir vuepress-starter cd vuepress-star…

模型系列:增益模型Uplift Modeling原理和案例

模型系列&#xff1a;增益模型Uplift Modeling原理和案例 目录 1. 简介1. 第一步2. 指标3. 元学习器 3.1 S-学习器3.2 T-学习器3.3 T-学习器相关模型 简介 Uplift是一种用于用户级别的治疗增量效应估计的预测建模技术。每家公司都希望增加自己的利润&#xff0c;而其中一个…

深度解析 | 什么是超融合数据中心网络?

数据中心网络连接数据中心内部通用计算、存储和高性能计算资源&#xff0c;服务器间的所有数据交互都要经由网络转发。当前&#xff0c;IT架构、计算和存储技术都在发生重大变革&#xff0c;驱动数据中心网络从原来的多张网络独立部署向全以太化演进。而传统的以太网无法满足存…

简述Redis备份策略以及对应的实现机制

引言 Redis作为高性能的内存数据库&#xff0c;数据的安全性至关重要。一旦数据丢失&#xff0c;可能会对业务造成重大影响。因此&#xff0c;备份Redis数据是每个Redis使用者都必须考虑的问题。本文将介绍Redis的备份策略以及对应的实现机制。 一、备份策略 1.1 定期备份 …

视频编辑软件,视频添加图片水印软件

你是否曾经为了制作一个简单的视频而头痛不已&#xff1f;是否觉得视频编辑软件的操作复杂&#xff0c;让人望而却步&#xff1f;【视频剪辑高手】将彻底改变这一现状&#xff01;它以简单、高效、创意为核心&#xff0c;为用户提供一站式的视频编辑解决方案。 所需工具&#…

du和df

du 和df 不一致的问题&#xff1a; 情况如下&#xff1a; innode 没有满 同事求助&#xff0c; 他在删掉一个很大的文件后&#xff0c; 磁盘空间依旧没释放。上去一看&#xff0c; 果然 df 看到磁盘空间占用依旧是100%&#xff0c;等等 du 看了一把&#xff0c;磁盘空间剩余很…

什么是MLOps?

人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;应用激动人心的发展浪潮也许会让人相信&#xff0c;企业交付ML产品的能力也在迅速提高。但现实情况是&#xff0c;ML内部流程很难跟上行业的整体发展……但若以MLOps的形式则有希望解决此问题&#xff…

基于遗传算法的航线规划

MATLAB2016b可以正常运行 基于遗传算法的无人机航线规划资源-CSDN文库

【网络安全 | 扫描器】御剑安装及使用教程详析

御剑是一款传统的Web网络安全综合检测程序&#xff0c;支持对PHP、JSP、ASPX等文件进行扫描&#xff0c;具备全扫描、网络安全扫描和主机安全扫描能力&#xff0c;方便发现网站漏洞。 文章目录 下载使用教程 本文对御剑的安装及使用教程进行详析 下载 下载地址读者可自行上网…