图像隐写工具
简单的 C++加密和隐写术工具,使用密码保护加密来保护文件的内容,然后使用最低有效位编码将其嵌入到图像的像素数据中。适用于 Linux、MacOS 和 Windows 系统。
操作原理
编码
该程序首先通过从/dev/urandom读取二进制数据随机生成一个128 位密码盐和一个128 位 AES 初始化向量。然后,它通过在用户输入的字符串上使用PBKDF2-HMAC-SHA-256 ,将该密码盐用作生成加密密钥的参数。然后计算要嵌入的文件的CRC32散列值,并将其存储在标头中作为数据有效性的校验和。然后它使用PKCS #7算法填充要嵌入的文件的二进制数据,然后在CBC 模式下使用AES-256实际加密标头和填充数据,使用先前生成的初始化向量。现在数据实际上是通过首先选择一个随机偏移量在图像内部编码的,然后遍历每一位数据并将其存储在实际图像像素数据中,这是通过设置每个通道字节的最低有效位来实现的每个像素。
解码
解码过程与前面描述的编码过程完全相同,只是相反。唯一的区别是对于解码,在程序尝试提取和解密数据后,它会比较标头部分中的一些信息,以尝试验证提取过程。比较的头字段是:该程序自定义的 4 字节文件签名,以及 解密数据的CRC32散列。如果这些字段中的任何一个与其正确值不匹配,解密过程将失败。只有当您尝试解密的文件实际上不包含嵌入、您输入的密码错误或图像文件以某种方式损坏时,才会发生这种情况。
检测
虽然检测图像中嵌入的数据是一项微不足道的任务,但理论上没有办法知道是这个程序做的,理论上应该没有已知的方法在不知道密码的情况下解密数据,即无需在此过程中花费数百万年。
项目地址:https://github.com/7thSamurai/steganography
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里