boringssl EVP_aes_128_ecb实现

这篇具有很好参考价值的文章主要介绍了boringssl EVP_aes_128_ecb实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近学习boringssl,发现没找到EVP_aes_128_ecb在哪里实现的

饶了一大圈,发现它的定义很无语

#define EVP_CIPHER_FUNCTION(keybits, mode)             \
  const EVP_CIPHER *EVP_aes_##keybits##_##mode(void) { \
    return aes_##keybits##_##mode##_generic();         \
  }



EVP_CIPHER_FUNCTION(128, cbc)
EVP_CIPHER_FUNCTION(128, ctr)
EVP_CIPHER_FUNCTION(128, ofb)
EVP_CIPHER_FUNCTION(128, gcm)

EVP_CIPHER_FUNCTION(192, cbc)
EVP_CIPHER_FUNCTION(192, ctr)
EVP_CIPHER_FUNCTION(192, ofb)
EVP_CIPHER_FUNCTION(192, gcm)

EVP_CIPHER_FUNCTION(256, cbc)
EVP_CIPHER_FUNCTION(256, ctr)
EVP_CIPHER_FUNCTION(256, ofb)
EVP_CIPHER_FUNCTION(256, gcm)

EVP_ECB_CIPHER_FUNCTION(128)
EVP_ECB_CIPHER_FUNCTION(192)
EVP_ECB_CIPHER_FUNCTION(256)

随便拿EVP_CIPHER_FUNCTION(128, cbc)展开

EVP_CIPHER_FUNCTION(128, cbc) =   const EVP_CIPHER *EVP_aes_128_cbc(void) {  \
    return aes_128_cbc_generic();                                            \
  }

这里的 aes_128_cbc_generic 参考boringssl DEFINE_LOCAL_DATA

其实有方向的情况下可以用gcc -E ./src/crypto/fipsmodule/cipher/e_aes.c -o test.i -I include/

-E,只执行到预编译,直接输出预编译结果【有目标的情况下】

可以看看如下的预编译结果

# 855 "./src/crypto/fipsmodule/cipher/e_aes.c"
const EVP_CIPHER *EVP_aes_128_cbc(void) { return aes_128_cbc_generic(); }
const EVP_CIPHER *EVP_aes_128_ctr(void) { return aes_128_ctr_generic(); }
const EVP_CIPHER *EVP_aes_128_ofb(void) { return aes_128_ofb_generic(); }
const EVP_CIPHER *EVP_aes_128_gcm(void) { return aes_128_gcm_generic(); }

const EVP_CIPHER *EVP_aes_192_cbc(void) { return aes_192_cbc_generic(); }
const EVP_CIPHER *EVP_aes_192_ctr(void) { return aes_192_ctr_generic(); }
const EVP_CIPHER *EVP_aes_192_ofb(void) { return aes_192_ofb_generic(); }
const EVP_CIPHER *EVP_aes_192_gcm(void) { return aes_192_gcm_generic(); }

const EVP_CIPHER *EVP_aes_256_cbc(void) { return aes_256_cbc_generic(); }
const EVP_CIPHER *EVP_aes_256_ctr(void) { return aes_256_ctr_generic(); }
const EVP_CIPHER *EVP_aes_256_ofb(void) { return aes_256_ofb_generic(); }
const EVP_CIPHER *EVP_aes_256_gcm(void) { return aes_256_gcm_generic(); }

const EVP_CIPHER *EVP_aes_128_ecb(void) { if (hwaes_capable()) { return aes_hw_128_ecb(); } return aes_128_ecb_generic(); }
const EVP_CIPHER *EVP_aes_192_ecb(void) { if (hwaes_capable()) { return aes_hw_192_ecb(); } return aes_192_ecb_generic(); }
const EVP_CIPHER *EVP_aes_256_ecb(void) { if (hwaes_capable()) { return aes_hw_256_ecb(); } return aes_256_ecb_generic(); }

文件 "./src/crypto/fipsmodule/cipher/e_aes.c + 行号;855文章来源地址https://www.toymoban.com/news/detail-683076.html

到了这里,关于boringssl EVP_aes_128_ecb实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AES-128算法实现(附C++源码)

    这次写AES算法的实验,发现还是比较麻烦的。同时,身边的很多同学对于该算法的编程实现会觉得比较晦涩,再加上AES本身的算法本身也比较复杂,使得实现起来比较麻烦,除此之外,很多同学也反映出网上的很多源码的程序都不能跑。基于这些情况,我决定出这么的一篇

    2024年02月04日
    浏览(34)
  • iOS-AES加解密各模式(ECB、CBC、CFB、OFB)的实现

    最近和服务器同学对接口进行数据加解密时用到了AES加密。原本以为AES就一种加密形式,对接过程中才学习到AES不同模式、不同填充方式下,结果都不相同。因此去学习了一下AES加密的基本概念、实现原理,以及各种模式下的区别与实现。 AES加密是对称加密的一种,全称是

    2024年02月02日
    浏览(46)
  • python实现AES-128#实现加密字符串和加密文件

    这篇文章是对之前的一篇文章的重写和优化AES加密算法基于python实现 脚本语言:Python 已实现的功能 明文和密密钥可以是任意字符:中文,字符,数字或符号。 ​ 明文长度任意,密钥的字节数不能超过16字节。默认编码为utf-8所以,密钥最多支持5个中文字符 待加密的数据:可

    2024年02月12日
    浏览(94)
  • 小程序AES加密ECB模式

    2024年02月09日
    浏览(279)
  • 前端通过AES进行加解密(ECB、CBC模式)

    在项目开发中,由于需要对接口传参的敏感信息进行加密传输,后端接口返回的参数也是进行加密过的,此时就需要进行加解密操作。 本篇文章使用AES进行加解密,AES加密算法提供了五种不同的工作模式:CBC,ECB,CTR,CFB,OFB 这里只对CBC和ECB加解密进行说明,这两种加密模

    2024年02月16日
    浏览(50)
  • C++使用openssl对AES-256-ECB PKCS7 加解密

    2024年02月03日
    浏览(36)
  • 【Python】AES 128加密和解密

    AES加密标准又称为高级加密标准Rijndael加密法,是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。AES的基本要求是,采用对称分组密码体制,密钥长度可以为128、192或256位,分组长度128位,算法应易在各种硬件和软件上实现。1998年NIST开始AES第一轮分析、测试和征

    2024年02月13日
    浏览(54)
  • php 调用python解密 AES-128-GCM

    因工作需要,要解密Java AES-128-GCM iv=16 模式的加密密文,找了php的很多方法,都无法解密成功,最后找了一个使用python3进行解密的方法,下面是解密方法: 主要是运用php的函数exec()执行Linux命令调用python运行python文件,获得返回结果。 注:此AES解密要用到python 3的 库 Crypto

    2024年01月18日
    浏览(50)
  • 爬虫小白-如何调试列表页链接与详情链接不一样并三种方式js逆向解决AES-ECB

    一、网站分析 三年前的案例,我的原始文章 网站 ,如图我们直接点击标题进入到详情页,链接会发生跳转,且与我们在详情看到的链接,与在列表页看到的链接完全不一样,如果拿列表页的链接直接新建标签页打开的话,详情页也是403, 而只有触发点击的模式才能拿看到真

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包