首页
学习
活动
专区
圈层
工具
发布

【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密 | 非对称加密 | 散列函数 )

文章目录 一、加密类型 二、加密解密三要素 三、加密应用场景 四、散列函数 一、加密类型 ---- 数据加密操作 分为 对称加密 和 非对称加密 ; 对称加密 : 加密密钥 与 解密密钥 相同 ;...非对称加密 : 加密密钥 与 解密密钥 不同 ; 二、加密解密三要素 ---- 加密 / 解密 3 要素 : 明文 密钥 密文 明文 通过 密钥 加密成 密文 , 密文 通过 密钥 解密成 明文...; 三、加密应用场景 ---- 对称加密 : 特点 : 运算速度快 , 加密的强度弱 , 容易被破解 ; 应用场景 : 适合 大量数据加密 ; 常用算法 : DES , 3DES , AES ; 非对称加密...: 特点 : 运算速度慢 , 加密的强度高 , 不容易被破解 ; 应用场景 : 适合 少量数据加密 ; 常用算法 : RSA , ECC ; 四、散列函数 ---- 通过 散列 / 哈希 算法 , 将数据经过运算..., 得到固定长度的 指纹 数据 , 不同的数据得到的指纹数据不同 ; 该类型算法是不可逆的 ; 常用算法 : MD5 , SHA1 ;

5.8K20

关于哈希(散列)函数你应该知道的东西

无论安全从业人员用计算机做什么,有一种工具对他们每个人都很有用:加密 哈希(散列)(hash)函数。...对于任意模式的输入,给定的哈希函数的输出(“哈希值”)的长度都是一样的(对于 SHA-256,是 32 字节或者 256 比特,这从名字中就能看出来)。...这就是为什么它们有时候被称作 单向哈希函数(one-way hash function)。 但是哈希函数是用来做什么的呢?为什么“唯一”的属性如此重要?...唯一的输出 在描述哈希函数的输出时,“ 希望唯一(hopefully unique)”这个短语是至关重要的,因为哈希函数就是用来呈现完全唯一的输出。...验证二进制数据 哈希函数的典型用途是当有人给你一段二进制数据,确保这些数据是你所期望的。

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    2018-10-11 对称加密、非对称加密、Hash算法看完这篇文章加解密就别蒙了散列函数加密算法

    8A%A0%E5%AF%86%E3%80%81%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E3%80%81Hash%E7%AE%97%E6%B3%95/ 散列函数...或散列算法,又称哈希函数,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。...散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。...同时,由于每个用户的私钥是唯一的,其他用户除了可以可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。...常见的Hash算法有MD2、MD4、MD5、HAVAL、SHA 加密算法的效能通常可以按照算法本身的复杂程度、密钥长度(密钥越长越安全)、加解密速度等来衡量。

    1.6K30

    如何利用mysql5.7提供的虚拟列来提高查询效率

    前言在我们日常开发过程中,有时候因为对索引列进行函数调用,导致索引失效。...如果我们使用的mysql是5.7版本,我们则可以使用mysql5.7版本提供的一个新特性--虚拟列来达到上述效果虚拟列在mysql5.7支持2种虚拟列virtual columns 和 stored columns...,但virtual类型的不行f、虚拟列定义不允许使用自增 (AUTO_INCREMENT),也不允许使用自增基列g、虚拟列允许修改表达式,但不允许修改存储方式(只能通过删除重新创建来修改)h、如果虚拟列用作索引...大体介绍了一下虚拟列,如果是使用mysql8.0.13以上的版本,可以函数索引,他的实现方式本质也是基于虚拟列实现。...所谓的函数索引就是在创建索引的时候,支持使用函数表达式。

    3.5K40

    PHP的openssl加密扩展使用小结

    加密基础 学习如何使用加密之前,我们需要了解一些加密相关的基础知识。 加密算法一般分为两种:对称加密算法和非对称加密算法。...数字签名 为了保证数据的完整性,还需要通过散列函数计算得到一个散列值,这个散列值被称为数字签名。...其特点有: 无论原始数据是多大,结果的长度相同的; 输入一样,输出也相同; 对输入的微小改变,会使结果产生很大的变化; 加密过程不可逆,无法通过散列值得到原来的数据; 常见的数字签名算法有md5,hash1...PHP的openssl扩展 openssl扩展使用openssl加密扩展包,封装了多个用于加密解密相关的PHP函数,极大地方便了对数据的加密解密。...,$method是加密要使用的方法,$password是要使用的密匙,函数返回加密后的数据; 其中$method列表可以使用openssl_get_cipher_methods()来获取,我们选取其中一个使用

    2.1K90

    网络协议(十一):单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书

    一、HTTP协议的安全问题 HTTP协议默认是采取明文传输的,因此会有很大的安全隐患 常见的提高安全性的方法是:对通信内容进行加密后,再进行传输 常见的加密方式 不可逆-单向散列函数:MD5、SHA...二、单向散列函数 单向散列函数(One-way hash function),也被称为消息摘要函数、哈希函数 单向散列函数,可以根据根据消息内容计算出散列值 输出的散列值,也被称消息摘要、指纹 单向散列函数网站...https://tool.chinaz.com/tools/md5.aspx 散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值 单向散列函数特点...根据任意长度的消息,计算出固定长度的散列值 计算速度快,能快速计算出散列值 具备单向性 消息不同,散列值不同,具有雪崩效应 常见的几种单向散列函数 MD4,MD5:产生128bit的散列值,...-31:全新标准 单向散列函数 - 防止数据被篡改 一般情况下是这样做的 应用单向散列函数来防止数据被篡改 三、对称加密 对称加密(Symmetric Cryptography):加密、解密时使用的是同一个密钥

    50910

    PHP 中的几种主要加密方式

    PHP 中的几种主要加密方式: 1. 散列(单向加密) 散列函数将数据转换成一个固定长度的字符串,这个过程是不可逆的。散列通常用于存储密码,以确保即使数据库被泄露,攻击者也无法轻易得到原始密码。...对称加密 对称加密使用相同的密钥进行加密和解密。它比非对称加密要快,适合加密大量数据。...("file://public.key"); openssl_public_encrypt($data, $encrypted, $publicKey); // 解密 $privateKey = openssl_pkey_get_private...散列消息认证码(HMAC) HMAC 是一种用于验证数据完整性和认证的机制,它结合了加密密钥和散列函数。...库和函数选择:使用经过验证的库和函数,避免自己实现加密算法。 定期更新:随着计算能力的提高,加密算法可能会变得不再安全,定期更新和评估你的加密策略是必要的。

    67910

    PHP 中的几种主要加密方式原创

    PHP 中的几种主要加密方式:1. 散列(单向加密)散列函数将数据转换成一个固定长度的字符串,这个过程是不可逆的。散列通常用于存储密码,以确保即使数据库被泄露,攻击者也无法轻易得到原始密码。...对称加密对称加密使用相同的密钥进行加密和解密。它比非对称加密要快,适合加密大量数据。...("file://public.key");openssl_public_encrypt($data, $encrypted, $publicKey);// 解密$privateKey = openssl_pkey_get_private...散列消息认证码(HMAC)HMAC 是一种用于验证数据完整性和认证的机制,它结合了加密密钥和散列函数。...库和函数选择:使用经过验证的库和函数,避免自己实现加密算法。定期更新:随着计算能力的提高,加密算法可能会变得不再安全,定期更新和评估你的加密策略是必要的。

    49010

    iOS开发(1)iOS签名机制

    (使用的是对称密码解密) 六、单向散列函数(One-way hash function) 单向散列函数,可以根据根据消息内容计算出散列值 散列值的长度和消息的长度无关,无论消息是1bit、10M、100G...,单向散列函数都会计算出固定长度的散列值 19.png 20.png 1、单向散列函数的特点 根据任意长度的消息,计算出固定长度的散列值 计算速度快,能快速计算出散列值 消息不同,散列值也不同...具备单向性 21.png 22.png 2、单向散列函数 单向散列函数,又被称为消息摘要函数(message digest function),哈希函数 输出的散列值,也被称为消息摘要(message...digest)、指纹(fingerprint) 常见的几种单向散列函数 MD4、MD5 产生128bit的散列值,MD就是Message Digest的缩写,目前已经不安全 Mac终端上默认可以使用...全新标准 3、如何防止数据被篡改 23.png 24.png 4、单向散列函数的应用 – 防止数据被篡改 25.png 26.png 5、单向散列函数的应用 – 口令加密 27.png 七、数字签名 想象以下场景

    2K30

    【数据结构】考研408 | 散列函数构造精解:从直接定址到平方取中的原理、场景与实战权衡

    (散列函数) 导读 大家好,很高兴又和大家见面啦!!! 在上一篇关于散列查找的探讨中,我们共同揭开了 哈希表(散列表)这一高效数据结构的神秘面纱。...; 二、直接定址法 直接定址法 是指 直接取关键字的某个线性函数值作为散列地址,对应的散列函数为: $$ \begin{align} Hash(key) &= key \ {或} \enspace Hash...在不同的情况下,不同的散列函数具有不同的性能,因此不能笼统地说明哪种散列函数更好。在实际选择中,采用何种构造散列函数地方法取决于关键字集合地情况。...结语 在今天的内容中,我们对 散列函数(哈希函数)的构造方法进行了系统且深入的讲解。...下篇内容预告 尽管精心设计的散列函数能有效减少冲突,但无法完全避免。在下一篇博客中,我们将探讨当冲突不可避免地发生时,如何有效地处理它们。

    24910

    对称加密、非对称加密的异同? TLS技术的工作原理?

    HTTP、HTTPS协议的区别? TLS技术的工作原理? HTTPS是如何加密的? 安全传输 密钥它是在明文转换为密文或密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。...密钥a、密钥b是拥有一定数学关系的一组密钥 密钥b:私钥自己使用,不对外公开 密钥a:公钥给大家使用,对外公开 散列算法 散列函数又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法...散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。...所以,从严格意义来说,哈希散列算法不能算加密算法,因为哈希散列是单向的,不具备逆向解密的能力。...综合了对称加密、非对称加密技术设计的安全协议 数字证书 数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。

    60810

    加解密算法分析与应用场景

    示例:SSL/TLS协议(结合了对称加密、非对称加密和散列函数)。散列函数(信息摘要)算法 散列函数特点散列函数(又称信息摘要算法)是一种将任意长度的输入数据映射到固定长度输出的算法。...耗时性:计算散列值需要一定的计算时间。 散列函数应用密码存储:将用户密码通过散列函数计算得到散列值,然后将散列值存储在数据库中。...当用户登录时,再次计算输入密码的散列值并与数据库中的散列值进行比较,以验证密码是否正确。文件完整性校验:通过散列函数计算文件的散列值,并将其与文件发送方提供的散列值进行比较。...接收方使用发送方的公钥解密散列值,并与数据的散列值进行比较。如果相同,说明数据未被篡改。 散列常见的函数MD5:是一种广泛使用的散列函数,生成128位散列值。...然而,由于其安全性较低,现已被更安全的散列函数所取代。SHA-1:SHA(Secure Hash Algorithm)家族中的一种散列函数,生成160位散列值。

    1.3K30

    一篇文章搞定密码学基础

    PS:2016.7.10 补充 散列函数与消息摘要 基本概念 明文M:原始数据,待加密的数据 密文C:对明文进行某种伪装或变换后的输出 密钥K:加密或解密中所使用的专门工具 加密E:用某种方法将明文变成密文的过程...,先用自己的私钥解密出会话密钥,然后用会话密钥解密出通信内容 散列函数与消息摘要 Hash函数也称为散列函数,它能够对不同长度的输入信息,产生固定长度的输出。...~~~ 散列算法:散列算法就是产生信息散列值的算法,它有一个特性,就是在输入信息中如果发生细微的改变,比如给变了二进制的一位,都可以改变散列值中每个比特的特性,导致最后的输出结果大相径庭,所以它对于检测消息或者密钥等信息对象中的任何微小的变化非常有用...; 4、接受方用发送方的公钥对签名信息进行解密,得到消息摘要; 5、接收方以相同的散列函数对接收到的消息进行散列,也得到一份消息摘要;、 6、接收方比较两个消息摘要,如果完全一致,说明数据没有被篡改...; 7、接受方用6中的密钥解密接收到的密文,得到原文信息和数字签名; 8、接受方用发送方的公钥对签名信息进行解密,得到消息摘要; 9、接收方以相同的散列函数对接收到的消息进行散列,也得到一份消息摘要

    1.9K90

    从明文裸奔到密钥长城:HTTPS加密全链路攻防与CA信任锚点构建

    示例:登录信息泄露 在网页中使用GET请求方法上传登录信息时账号和密码是显露在外面的,如下: 或者抓包后使用Fiddler获取协议报文同样能获取到登录信息,如下抓取到的GET请求方法的报文: 抓取到的...三、数据摘要(数据指纹) 数据指纹,其基本原理是利用单向散列函数(Hash 函数)对信息进行运算,生成一串固定⻓度的数字摘要。...数据摘要具有唯一性,和人的指纹一样,所以也叫数据指纹。 数据通过哈希算法生成的散列值就是数据摘要,在将数据摘要进行加密就是数据签名,关于数据签名的使用在下文详细讲解。...上文所讲的数据指纹就是来验证数据是否被篡改的,已经做好了铺垫。 数据指纹:散列函数对数据进行处理生成的散列值。 签名:对数据指纹进行加密。 假设签名者:公钥Q,私钥Q'。...用公钥Q对签名解密拿到数据指纹。 把数据用相同的散列函数生成数据指纹。 把两个数据指纹进行对比,判断数据是否被修改。 公钥Q所以人都知道,是彻底公开的,内置在客户端中。

    35110

    如何创建一个用弹出窗口来查看详细信息的超链接列

    如何创建一个用弹出窗口来查看详细信息的超链接列出处:www.dotnetjunkie.com   JavaScript...强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码 如何创建一个用弹出窗口来查看详细信息的超链接列 出处:www.dotnetjunkie.com...      这篇文章来自于一位忠实的DotNetJunkie的建议,他最初发了一封email给我们, 要求我们给出一个例子来说明如何在DataGrid中设置一个当用户点击时能够弹出 显示其详细信息的新窗口的超链接列...这篇文章包含了两个webforms和一个css第一个webform包含了一个DataGrid,它显示了Northwind数据库中的一列产品还有写着"SeeDetails"的超链接。...只要点击了这个链接,就会调用JavaScript的Window.Open方法来打开一个新的窗口。在一个Url中包含了用户想详细了解的产品的ProductId的Query String 参数。

    2.8K30

    Django实战-信息资讯-课程管理视图

    对视频课程转码解密,视频内容上传到百度云,通过对视频转码加密,防止视频被下载。所以在视频播放前,需要获取后端传来的 token,然后再通过百度云的视频解析器来播放视频。 ?...> 发布设置 > 安全设置 > UserKey BAIDU_CLOUD_USER_KEY = '' HMAC需要一个加密用散列函数(表示为H)和一个密钥K。...假设H是一个将数据块用一个基本的迭代压缩函数来加密的散列函数。 用B来表示数据块的长。...(以上说提到的散列函数的分割数据块长B=64),用L来表示散列函数的输出数据长(MD5中L=16,SHA—1中L=20)。 密钥的长度可以是小于等于数据块长的任何正整数值。...应用程序中使用的密钥长度若是比B大,则首先用使用散列函数H作用于它,然后用H输出的L长度字符串作为在HMAC中实际使用的密钥。

    51510

    iOS逆向之ipa签名原理

    同样的消息经过同一个摘要函数计算的散列值永远相同,不同的消息计算的散列值也不同。 消息摘要具备不可逆性。消息摘要函数又叫做单向散列函数,顾名思义,函数具备单向性和不可逆性。...1.防止数据篡改 单向散列函数的应用场景之一就是防止(验证)数据是否被篡改,一旦发现数据被篡改则丢弃该数据。所以需要事先保证散列值的安全性,即不能把散列值暴露出去,也不能在网络上传输散列值。...因为对称密码、公钥密码、单向散列函数都无法同时满足【防篡改、防伪装、防否认】。所以需要一种新的技术来识别数据篡改、伪装、否认。这种技术就是数字签名。...数字签名解密即指对消息摘要执行解密和验证的处理过程,如下: 使用公钥解密数字签名(私钥加密的摘要)得到解密后的消息摘要A 使用相同算法的单向散列函数对明文消息进行摘要计算得到消息摘要B 对比消息摘要A和消息摘要...CA机构的公钥验证公钥证书的合法性 使用哈希函数对公钥证书中的公钥进行单向散列求得散列值A 使用预置的CA机构的公钥解密公钥证书的数字签名获得散列值B 对比散列值A和散列值B是否相等,相等则说明公钥合法

    10.7K11

    iOS逆向之签名原理

    同样的消息经过同一个摘要函数计算的散列值永远相同,不同的消息计算的散列值也不同。 消息摘要具备不可逆性。消息摘要函数又叫做单向散列函数,顾名思义,函数具备单向性和不可逆性。...1.防止数据篡改 单向散列函数的应用场景之一就是防止(验证)数据是否被篡改,一旦发现数据被篡改则丢弃该数据。所以需要事先保证散列值的安全性,即不能把散列值暴露出去,也不能在网络上传输散列值。...使用者从其他渠道下载了软件之后对软件进行散列值计算,和官网的散列值对比即可验证下载的软件是否为正版可信赖。 2.密码口令加密 单向散列函数的另一个应用场景就是用户的登录口令加密。...因为对称密码、公钥密码、单向散列函数都无法同时满足【防篡改、防伪装、防否认】。所以需要一种新的技术来识别数据篡改、伪装、否认。这种技术就是数字签名。...数字签名解密即指对消息摘要执行解密和验证的处理过程,如下: 使用公钥解密数字签名(私钥加密的摘要)得到解密后的消息摘要A 使用相同算法的单向散列函数对明文消息进行摘要计算得到消息摘要B 对比消息摘要A和消息摘要

    8.7K32

    计算机网络概论笔记

    网络安全:对称加密和非对称加密 对称加密:加密、解密用同样的秘钥 非对称加密:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密 网络安全:密码散列函数(哈希函数...) 输入:任意长度的内容 输出:固定长度的哈希值 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的 网络安全:机密性 加密需要加密算法和密钥等信息(统称为秘密信息) 网络是明文的...网络安全L完整性和身份验证 完整性和身份验证相互关联 网络安全:如何实现机密性 网络安全:如何实现完整性 密码散列函数性质:找到两个不同的输入使之使之经过密码散列函数后有相同的哈希值,在计算上是不可能的...有明文m,密码散列函数H 计算H(m)获得哈希值h 将m和h组合成新信息m+h 接收方拆分m+h,重新计算H(m)得h‘,对比h’和h 有明文m,密码散列函数H,以及一个密钥s 计算H(m+s)获得哈希值...),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密 保证了机密性、完整性和身份验证 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证 数字签名(指纹)=私钥加密(密码散列函数(原文))

    40740
    领券