java 图片隐写术 方法_基本的隐写术:把任意文件隐藏在一张图片里

摘要:只需要系统本身的copy命令和一个压缩软件即可实现隐写的目的,当然解开它也无需其他软件,用压缩软件本身即可以打开已经做过处理的文件。适合平时的公用电脑或者不可以设密码但又想保存一些私人文件的计算机。

步骤:

一、准备:

1.一张图片(a.jpg)

2.一个做试验的txt文件(test.avi) 。也可以是 一个文本文件

3.WinRAR(或者好压)压缩工具

4.放在D盘。

7f155907ef31b93ded1cd4a7abf99852.png

二:压缩文件

把要隐藏的文件 test.avi用 WinRAR 压缩。生成 test.rar 压缩包

d4ba83d67ea7f794ec3106ab7eb72c34.png

三:打开windows 命令行窗口

打开命令行提示符:点击“开始→运行”,输入“cmd”

四:copy命令

输入命令:copy /b D:a.jpg + D:test.rar D:a.jpg

aceca018ac50104f8c13c5ad8a0b3376.png

五:查看

这样,刚刚普通的图片(a.jpg)就成功的制作了一张特殊的图片,当你双击图片的时候,是正常能打开图片的。那么如何查看这张图片下面的隐藏文件(test.avi)呢?

打开 WinRAR(或者好压等其他压缩软件) ,点击“文件→打开(快捷键 Ctrl + O )”,然后选择文件类型为“所有文件”,找到 刚才的图片 a.jpg ,选择打开,这样就可以看到我们想要的 test.avi 文件了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
没有积分的私聊我 看到消息百分百发给你 1、算法核心: 1、读取图片A,获得其RGB三个通道数据并转换成三个矩阵a1,a2,a3。 2、读取文件B,将其转换成比特流b。 3、遍历b,得到比特b1,b2,b3,b4,b5,b6等等,将b1代替a1第一个元素的最低位,将b2代替a2第一个元素的最低位,将b3代替a3第一个元素的最低位,将b4代替a1第二个元素的最低位,以此类推。 2、具体实现: 1、: 1、使用java ImageIO读取图片,获取其RGB通道信息。 2、使用java NIO读取被嵌入的文件,将其转换为byte数组,需要特别指出的是原生方法得到是byte类型的数组,但是算法实现需要更加精细的操作,所以还需要对得到的byte数组进行进一步的转换封装,将其转换成形如10101的数组。例如,读取文件得到byte数组的第一个元素为63,需将63转换为00111111数组。并且保存好文件的长度。 3、按照算法,遍历形如10101的数组 1、如果遍历到的值为0,将矩阵对应的矩阵元素与0xfe进行与运算,将最低位置为0 2、如果遍历到的值为1,将矩阵对应的矩阵元素与0x01进行或运算,将最低位置为1 4、将步骤3得到的经过经过的矩阵为一张新的图片。 3、读取 1、使用java ImageIO读取图片,获取其RGB通道信息。 2、使用步骤3得到的文件长度,遍历图片的像素矩阵,需要特别指出的是因为后续步骤还需要进行进一步的转化,所以这一步是将得到的“100100......”序列每八位封装为一个数组,最终得到一些数组集合,每个数组包含八位二进制序列。 3、将步骤2得到的数组进行转换,例如00111111应该转换为byte类型数值为63的数字,10111111转换为-63。这一步会得到一个byte类型的数组。 4、将步骤3得到的byte类型数组文件,需要指出的是入的文件形式应该和模块步骤二中读入的文件形式一致。 3、程序使用方法 1、安装Java8 2、使用命令行进入jar文件所在目录下,使用命令 java -jar 2016115130.jar 3、安装提示输入嵌入和被嵌入的文件名字,注意路径问题
Python3 中有多种实现图片的库,其中常用的有 stegano 和 pillow 等。 以下是使用 pillow 库实现图片的示例代码: ```python from PIL import Image def encode_image(image_path, message): # 打开图片并将其转换为 RGB 模式 img = Image.open(image_path).convert('RGB') pixels = img.load() # 获取图片的宽和高 width, height = img.size # 将待隐藏信息的二进制形式转换为字符串 binary_message = ''.join([format(ord(i), "08b") for i in message]) # 检查信息的长度是否超过了图片的容量 if len(binary_message) > width * height: raise ValueError("待隐藏信息过长") # 开始 index = 0 for row in range(height): for col in range(width): # 将每个像素的 RGB 值转换为二进制形式 r, g, b = pixels[col, row] binary_r = format(r, "08b") binary_g = format(g, "08b") binary_b = format(b, "08b") # 如果还有待隐藏的信息,则将其入像素的最低有效位中 if index < len(binary_message): pixels[col, row] = ( int(binary_r[:-1] + binary_message[index], 2), int(binary_g[:-1] + binary_message[index+1], 2), int(binary_b[:-1] + binary_message[index+2], 2) ) index += 3 # 保存后的图片 img.save("encoded_image.png") def decode_image(image_path): # 打开图片并将其转换为 RGB 模式 img = Image.open(image_path).convert('RGB') pixels = img.load() # 获取图片的宽和高 width, height = img.size # 从图片中读取信息 message = "" for row in range(height): for col in range(width): r, g, b = pixels[col, row] binary_r = format(r, "08b") binary_g = format(g, "08b") binary_b = format(b, "08b") message += binary_r[-1] + binary_g[-1] + binary_b[-1] # 将二进制信息转换为字符串 decoded_message = "" for i in range(0, len(message), 8): decoded_message += chr(int(message[i:i+8], 2)) return decoded_message ``` 使用示例: ```python # 信息到图片中 encode_image("test.png", "Hello World!") # 从图片中读取信息 message = decode_image("encoded_image.png") print(message) # 输出 "Hello World!" ``` 注意:图片是一种敏感的技,不应用于违法活动或侵犯他人私的行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值