Skip to content

EXP-Codes/pyc-cross-crypto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pyc-cross-crypto

python & c++ 跨平台加解密


0x00 前言

由于 python 和 C++ 的 AES/DES 填充算法存在细微差异(应该说是第三方库存在差异),默认情况下, crypto++、pycryptodome、pyDes 即使 key、iv、编码 等等都一致的情况下,彼此所生成的密文是无法相互解密的。

这直接导致了跨平台加解密非常麻烦。苦于目前网上并没有现成的跨平台加解密,故有了此工程。

其实各个语言的实现都不尽相同,例如在数据本身已对齐 BLOCKSIZE 的情况下会不会再填充一个 BLOCK ,IV 是否强制使用随机等。

0x10 环境说明

0x20 核心文件

0x21 C++

使用 VS2022 打开 cpp.sln 工程,默认就是已配置好 crypto++ 的依赖,若希望自行配置,可参考《Visual Studio 搭建 Boost + CryptoPP 开发环境

0x22 python

  • AES(依赖 pycryptodome):
  • DES(依赖 pyDes):
  • 测试: cd python
    • 安装依赖: python -m pip install -r requirements.txt
    • 执行命令: python ./test/test_crypto.py
    • 只是 python 内部测试,想验证跨平台需要手动把 C++ 的密文拷贝到 test_crypto.py 中替换验证

0x30 开发环境部署

python 环境直接安装就好, Windows 和 Mac 都是一样的。

主要说一下 C++ 的环境:

  • Windows(需要提前安装 VS2022):
    • GUI 方法: 使用 VS2022 打开 cpp.sln 文件即可
    • CMD 方法:
      1. cd cpp
      2. 编译: bin/build.ps1
      3. 执行: bin/run.ps1
  • Mac/Linux (需要提前安装 g++ 和 cmake):
    1. cd cpp
    2. 编译: bin/build.sh
    3. 执行: bin/run.sh

Releases

No releases published

Packages

No packages published

Languages