美文网首页
密码学基础

密码学基础

作者: Colin_狂奔的蚂蚁 | 来源:发表于2018-05-04 23:43 被阅读63次
密码学基础

哈希(散列函数)算法(MD5/SHA/HMAC)

算法公开
对不同数据加密结果是定长的!32位字符!!(所能表示的个数是不是有限的!!)
信息摘要(加密之后的数据是不可逆!!)

哈希的破解!!
散列碰撞:就是找出两个不同的数据,加密之后得到相同的结果!!

比方说:用户隐私数据!! 绝对不允许明文传递!!(需要加密!! -- 哈希算法!!)
服务器是不知道用户的真实密码! -- 找回密码的功能!!
网络传输数据 -- 登录!!(用户密码!!)

pragma mark - 散列函数

计算MD5散列结果

/**
 *  终端测试命令:
 *  md5 -s "string"
 *  <p>提示:随着 MD5 碰撞生成器的出现,MD5 算法不应被用于任何软件完整性检查或代码签名的用途。<p>
 *  @return 32个字符的MD5散列字符串
 */
- (NSString *)md5String;

计算SHA1散列结果

/**
 *  终端测试命令:
 *  echo -n "string" | openssl sha -sha1
 *  @return 40个字符的SHA1散列字符串
 */
- (NSString *)sha1String;

计算SHA256散列结果

/**
 *  终端测试命令:
 *  echo -n "string" | openssl sha -sha256
 *  @return 64个字符的SHA256散列字符串
 */
- (NSString *)sha256String;

计算SHA 512散列结果

/**
 *  终端测试命令:
 *  echo -n "string" | openssl sha -sha512
 *  @return 128个字符的SHA 512散列字符串
 */
- (NSString *)sha512String;
pragma mark - HMAC 散列函数

计算HMAC MD5散列结果

/**
 *  终端测试命令:
 *  echo -n "string" | openssl dgst -md5 -hmac "key"
 *  @return 32个字符的HMAC MD5散列字符串
 */
- (NSString *)hmacMD5StringWithKey:(NSString *)key;

计算HMAC SHA1散列结果

/**
 *  终端测试命令:
 *  echo -n "string" | openssl sha -sha1 -hmac "key"
 *  @return 40个字符的HMAC SHA1散列字符串
 */
- (NSString *)hmacSHA1StringWithKey:(NSString *)key;

计算HMAC SHA256散列结果

/**
 *  终端测试命令:
 *  echo -n "string" | openssl sha -sha256 -hmac "key"
 *  @return 64个字符的HMAC SHA256散列字符串
 */
- (NSString *)hmacSHA256StringWithKey:(NSString *)key;

计算HMAC SHA512散列结果

/**
 *  终端测试命令:
 *  echo -n "string" | openssl sha -sha512 -hmac "key"
 *  @return 128个字符的HMAC SHA512散列字符串
 */
- (NSString *)hmacSHA512StringWithKey:(NSString *)key;
pragma mark - 文件散列函数

计算文件的MD5散列结果

/**
 *  终端测试命令:
 *  md5 file.dat
 *  @return 32个字符的MD5散列字符串
 */
- (NSString *)fileMD5Hash;

计算文件的SHA1散列结果

/**
 *  终端测试命令:
 *  openssl sha -sha1 file.dat
 *  @return 40个字符的SHA1散列字符串
 */
- (NSString *)fileSHA1Hash;

计算文件的SHA256散列结果

/**
 *  终端测试命令:
 *  openssl sha -sha256 file.dat
 *  @return 64个字符的SHA256散列字符串
 */
- (NSString *)fileSHA256Hash;

计算文件的SHA512散列结果

/**
 *  终端测试命令:
 *  openssl sha -sha512 file.dat
 *  @return 128个字符的SHA512散列字符串
 */
- (NSString *)fileSHA512Hash;

对称加密算法(DES/3DES/AES)

  • 加密和解密使用同一个"密钥"!!
  • 密钥的保密工作非常重要!!密钥一般会定期更换!密钥管理非常麻烦!!

经典算法

  • DES 数据加密标准(用的少,因为强度不够!)
  • 3DES 使用3个密钥,对相同的数据执行三次加密,强度增强(更加用的少!)
  • AES 高级密码标准,目前美国国家阿暖局使用的就是AES!!破解2000万年!!

对称加密算法有两种加密方式!!
ECB & CBC

  • ECB:电子代码本,就是说每一个数据块都是独立加密的!!
  • CBC:密码块链,使用一个密钥和一个"初始化向量(IV)"对数据执行加密转换!!
    如果在传输数据的过程中,一个数据块被破坏了,那么整个数据都没法解密了!!

终端测试指令

DES(ECB)加密
$ echo -n hello | openssl enc -des-ecb -K 616263 -nosalt | base64

DES(CBC)加密
$ echo -n hello | openssl enc -des-cbc -iv 0102030405060708 -K 616263 -nosalt | base64

AES(ECB)加密
$ echo -n hello | openssl enc -aes-128-ecb -K 616263 -nosalt | base64

AES(CBC)加密
$ echo -n hello | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt | base64

DES(ECB)解密
$ echo -n HQr0Oij2kbo= | base64 -D | openssl enc -des-ecb -K 616263 -nosalt -d

DES(CBC)解密
$ echo -n alvrvb3Gz88= | base64 -D | openssl enc -des-cbc -iv 0102030405060708 -K 616263 -nosalt -d

AES(ECB)解密
$ echo -n d1QG4T2tivoi0Kiu3NEmZQ== | base64 -D | openssl enc -aes-128-ecb -K 616263 -nosalt -d

AES(CBC)解密
$ echo -n u3W/N816uzFpcg6pZ+kbdg== | base64 -D | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt -d

非对称加密算法(RSA)

  • 公钥和私钥
  • 使用公钥加密,私钥解密
  • 使用私钥加密,公钥解密

加载公钥

 # 生成证书
 $ openssl genrsa -out ca.key 1024
 # 创建证书请求
 $ openssl req -new -key ca.key -out rsacert.csr
 # 生成证书并签名
 $ openssl x509 -req -days 3650 -in rsacert.csr -signkey ca.key -out rsacert.crt
 # 转换格式
 $ openssl x509 -outform der -in rsacert.crt -out rsacert.der

加载私钥

openssl pkcs12 -export -out p.p12 -inkey ca.key -in rsacert.crt

源码地址

哈希&对称&非对称加密算法源码

相关文章

  • 密码学-RSA

    密码学 密码学是指研究信息加密,破解密码的技术科学。密码学的起源可追溯到2000年前。而当今的密码学是以数学为基础...

  • iOS-逆向(七) RSA加密

    密码学 密码学是指研究信息加密,破解密码的技术科学.密码学的起源可追溯到2000年前,如今的密码学是以数学为基础的...

  • 0. 密码学专题 - 概述

    密码学专题 - 概述 本人打算整理一份关于密码学基础知识的专栏。主要参考了这些书籍:《应用密码学:协议、算法与C源...

  • 浅谈密码学——加密者与破译者的博弈

    密码学是网络安全、信息安全、区块链等产品的基础,常见的非对称加密、对称加密、散列函数等,都属于密码学范畴。 密码学...

  • 比特币之密码学应用

    由于比特币的去中心化安全机制是完全建立在密码学基础之上的,所以比特币家族又被称为“密码学货币”,可以说密码学是比特...

  • 密码学之RSA加密原理解析

      密码学是指研究信息加密,破解密码的技术科学。密码学的起源可追溯到2000年前。而当今的密码学是以数学为基础的。...

  • 密码学RSA

    密码学是指研究信息加密,破解密码的技术科学。密码学的起源可追溯到2000年前。而当今的密码学是以数学为基础的。 密...

  • 《精通以太坊》-密钥,地址

    原文:Keys, Addresses 以太坊的基础技术之一是密码学,这是数学的一个分支,广泛用于计算机安全。密码学...

  • 密码学基础

    密码学基础 标签: Blockchain Hash Hash (哈希或散列)是指将任意长度的二进制值映射成为一个固...

  • 密码学基础

    哈希(散列函数)算法(MD5/SHA/HMAC) 算法公开对不同数据加密结果是定长的!32位字符!!(所能表示的个...

网友评论

      本文标题:密码学基础

      本文链接:https://www.haomeiwen.com/subject/yfajrftx.html