crypto

模块描述
该模块提供一系列加密函数:

  • 散列函数-安全散列标准,MD5报文摘要算法(RFC 1321)和MD4报文摘要算法(RFC 1320);
  • Hmac函数-散列消息认证(RFC 2104)
  • 分组密码-DES和AES的分组密码模式-ECB,CBC,CFB,OFB和CTR
  • RSA加密(RFC 1321)
  • 数字签名 数字签名标准(DSS)和椭圆曲线数字签名算法(ECDSA)
  • 安全远程密码协议(RFC 2945)

数据类型

key_value() = integer() | binary()
digest_type() = md5 | sha | sha224 | sha256 | sha384 | sha512
hash_algorithms() = md5 | ripemd160 | sha | sha224 | sha256 | sha384 | sha512
rsa_private() = [key_value()] = [E, N, D] | [E, N, D, P1, P2, E1, E2, C]
dss_private() = [key_value()] = [P, Q, G, X]
ecdh_private() = key_value()
ecdh_params() = ec_named_curve() | ec_explicit_curve()
ec_named_curve() ->
  sect571r1| sect571k1| sect409r1| sect409k1| secp521r1| secp384r1| secp224r1| secp224k1|
  secp192k1| secp160r2| secp128r2| secp128r1| sect233r1| sect233k1| sect193r2| sect193r1|
  sect131r2| sect131r1| sect283r1| sect283k1| sect163r2| secp256k1| secp160k1| secp160r1|
  secp112r2| secp112r1| sect113r2| sect113r1| sect239k1| sect163r1| sect163k1| secp256r1|
  secp192r1|
  brainpoolP160r1| brainpoolP160t1| brainpoolP192r1| brainpoolP192t1| brainpoolP224r1|
  brainpoolP224t1| brainpoolP256r1| brainpoolP256t1| brainpoolP320r1| brainpoolP320t1|
  brainpoolP384r1| brainpoolP384t1| brainpoolP512r1| brainpoolP512t1
ec_explicit_curve() = {ec_field(), Prime :: key_value(), Point :: key_value(), Order :: integer(), CoFactor :: none | integer()}
ec_field() = {prime_field, Prime :: integer()} | {characteristic_two_field, M :: integer(), Basis :: ec_basis()}
ec_basis() = {tpbasis, K :: non_neg_integer()} | {ppbasis, K1 :: non_neg_integer(), K2 :: non_neg_integer(), K3 :: non_neg_integer()} | onbasis

常用函数
sign/4
用法:

sign(Algorithm, DigestType, Msg, Key) -> binary() when
  Algorithm = rsa | dss | ecdsa,
  DigestType = digest_type(),
  Msg = binary() | {digest, binary()},
  Key = rsa_private() | dss_private() | [ecdh_private(), ecdh_params()].

生成数字签名,类似于public_key:sign/3。

verify/5

verify(Algorithm, DigestType, Msg, Signature, Key) -> boolean() when
  Algorithm = rsa | dss | ecdsa,
  DigestType = digest_type(),
  Msg = binary() | {digest,binary()},
  Signature = binary(),
  Key = rsa_public() | dss_public() | [ecdh_public(),ecdh_params()].

数字签名验证,类似于public_key:verify/4。

hmac/3 & hmac/4

hmac(Type, Key, Data, MacLength) -> binary() when
  Type = 散列算法,除了ripemd160,
  Key = iodata(),
  Data = iodata(),
  MacLength = integer().

利用哈希算法,一个密钥Key和一个消息Data为输入,生成一个消息摘要。

最新文章

  1. Socket异步通讯
  2. connections
  3. C#验证子网掩码的正确性
  4. ubutu安装搜狗
  5. Initialize the Storage Emulator by Using the Command-Line Tool
  6. pyplot基本绘制(二)
  7. ajax练习习题三搜索
  8. mongodb的常用操作
  9. MySql中,复制旧表结构到新表
  10. 【零基础学习iOS开发】【02-C语言】10-函数
  11. 【转】C语言 字符数组与字符串
  12. EntityFramework 使用Linq处理内连接(inner join)、外链接(left/right outer join)、多表查询
  13. bootstrap首页制作
  14. 【归并排序】【逆序数】HDU 5775 Bubble Sort
  15. MDX基础
  16. [python 基础] Class 一些基本概念
  17. cat和tac的用法
  18. android自定义viewgroup初步之一----抽屉菜单
  19. Spring in Action 第一章 Spring之旅
  20. bootstrap 三个文件的引入

热门文章

  1. Python学习系列:目录
  2. SpringBoot 使用JPA时解决no session的方法
  3. 记我的一次 Java 服务性能优化
  4. cookie session sessionStorage localStorage
  5. 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫
  6. vscode 支持 threejs 的智能提示
  7. 【记忆化搜索】掷骰子 hpuoj
  8. vue 异步加载远程组件(支持编译less语法)
  9. Linux配置部署_新手向(一)——CentOS系统安装
  10. 2017版 Jetbrains 系列软件激活方法