热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

加密之MD5加密

MD5算法是什么?它可以讲字符串或者一个文件流变成一个长度为32的字符串特点:加密不可逆MD5存在的意义:写法:用C#实现MD51.将字符串用MD5算法处理
MD5算法是什么?

它可以讲字符串或者一个文件流变成一个长度为32的字符串

特点: 加密不可逆

MD5存在的意义:

写法:用C#实现MD5

1.将字符串用MD5算法处理

    准备一个字符串

    将字符串变成一个字符数组

    创建MD5对象,调用其ComputeHash方法

    得到一个16个字节的字节数组

    使用SB拼接,将每个字节用ToString("x2")处理

代码:

  ---------------------将一个字符串用MD5处理-------------------------

    string str="abc";

    //字节数组

    //如果是字符串是英文,用Encoding.UTF8,如果是中文就用Encoding.GetEncoding("gb2312")

    bytes[] bs = Encoding.UTF8.GetBytes(str);

    //准备MD5对象

        MD5 md5 = MD5.Create();

    //计算指定字节数组的哈希值

    bs=md5.ComputeHash(bs);

    StringBuilder sb = new StringBuilder();

因为对于字节如果用十进制表示为0-255,用二进制表示为0000000-11111111,十六进制为000000-FFFFFF,为了统一处理,这里做了统一,用十六进制

    for(int i=0;i

    {

       sb.Append(bs[i].ToString("x2"));

    }

    Console.WriteLine(sb.ToString());

    Console.ReadKey();

  ----------------------将一个文件用MD5算法处理-----------------------

    MD5 md5=MD5.Create();

    string path=@"文件路径";

    //准备好byte数组

    byte[]bs;

    using(FileStream file= new FileStream(path,FileMode.Open,FileAccess.Read))

    {

       bs = md5.ComputeHash(file);

    }

    //后面的代码和上面处理字符串的代码一样用

    for(int i=0;i

    {

       sb.Append(bs[i].ToString("x2"));

    }

    Console.WriteLine(sb.ToString());

    Console.ReadKey();


推荐阅读
  • PHP中元素的计量单位是什么? ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
  • Java集合框架特性详解与开发实践笔记
    Java集合框架特性详解与开发实践笔记 ... [详细]
  • 易语言程序加密的基本原则涉及多种技术和策略。早期的加密方法主要是在软盘上创建非标准磁道,并在这些磁道中存储关键数据,例如解密密钥等。现代加密技术则更加注重算法的安全性和数据的完整性,以确保程序在运行过程中不被轻易破解。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • 本文深入探讨了 Vue 框架中的混入(mixins)机制及其实际应用场景。首先,文章从官方文档出发,详细解读了混入的基本概念和核心原理。接着,通过具体的代码示例,展示了如何创建和使用混入,帮助开发者更好地理解和掌握这一功能。此外,文章还对比了混入与 Vuex、公共组件之间的区别,明确了各自适用的场景和优缺点,为开发者在项目中选择合适的技术方案提供了参考。 ... [详细]
  • 哈希表(Hash Table)是一种高效的查找算法,与传统的链表和树结构相比,其在查找过程中无需进行逐个元素的比较。本文将深入探讨哈希表的基本原理、应用场景以及优化策略,帮助读者全面理解其在实际开发中的优势和局限性。通过实例分析和代码示例,我们将展示如何有效利用哈希表提高数据处理效率,并解决常见的冲突问题。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 深入探索 JavaScript 中 Array 数组对象的基本操作与应用
    深入探索 JavaScript 中 Array 数组对象的基本操作与应用 ... [详细]
  • 【并发编程】全面解析 Java 内存模型,一篇文章带你彻底掌握
    本文深入解析了 Java 内存模型(JMM),从基础概念到高级特性进行全面讲解,帮助读者彻底掌握 JMM 的核心原理和应用技巧。通过详细分析内存可见性、原子性和有序性等问题,结合实际代码示例,使开发者能够更好地理解和优化多线程并发程序。 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 解决Android应用在手机安装时出现安全风险提示的方法与对策
    解决Android应用在手机安装时出现安全风险提示的方法与对策 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • RK算法通过比较两个字符串的哈希值来实现快速匹配,但即使哈希值相同,也不能确保两字符串完全一致,仍需进行逐字符对比以确认。此过程的时间复杂度为O(n)。此外,RK算法在文本搜索、模式识别等领域有广泛应用,并可通过多种优化策略提高其效率和准确性。 ... [详细]
author-avatar
大海2502902497
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有