去语言实现将重要数据写入图片中

  

原理:将数据的二进制形式写入图像红色通道数据二进制的低位
  只支持png格式的输出
  写入数据
  运行的影子。=-=眂.jpg”拼“https://www.yisu.com/zixun/hide”两级="。png”
  读取数据
  运行的影子。去——=" out.png "

  

代码如下:
  包主要
  导入(
  ,,“错误”
  ,,“国旗”
  ,,“fmt”
  ,,“图像”
  ,,“图像/颜色”
  ,,_“图像/jpeg”
  ,,“图像/png”
  ,,“日志”
  ,,“数学”
  ,,“操作系统”
  )
  {var国旗=[4]字节0 * 13,0 x14, 0 x52, 0 x00}//影子国旗。
//字节,8位
  func Byte2bits (b字节)([8]字节){
  ,,var c uint8=7
  ,,var我uint8
  ,,因为我=0;我& lt;8;我+ + {
  ,,,,,,[我]=b在祝辞(c - i),1
  ,,}
  ,,返回
  }
//8位字节。
  func Bits2Byte([8]字节)(2字节){
  ,,我:=0;我& lt;8;我+ + {
  ,,,,,,b +=[我]* uint8(数学。战俘(float64(我)))
  ,,}
  ,,返回
  }
//uint32 4字节。
  func Uint32ToBytes(我uint32) (b[4]字节){
  ,,我[0]=uint8(祝辞祝辞24)
  ,,[1]=uint8(我在祝辞16,0 xffff)
  ,,[2]=uint8(我在祝辞8,0 xff)
  ,,我[3]=uint8 (,0 xff)
  ,,返回
  }
//uint32 4字节。
  func Bytes2Uint32 (b[4]字节)(我uint32) {
  ,,var j uint32
  ,,为;j & lt;4;j + + {
  ,,,,,,我+=uint32 (b [j]) & lt; & lt;(24 - j * 8)
  ,,}
  ,,返回
  }
  func BuildShadowHeader(长度uint32) (b[8]字节){
  ,,var我int
  ,,为;我& lt;4;我+ + {
  ,,,,,,b[我]=国旗[我]
  ,,}
  ,,答:=Uint32ToBytes(长度)
  ,,为;我& lt;8;我+ + {
  ,,,,,,b[我]=[我]
  ,,}
  ,,返回
  }
  func WriteShadow (b[]字节,im image.Image)(形象。形象,犯错错误){
  ,,马克斯:=im.Bounds () .Max.X * im.Bounds .Max ()。Y/8 - 64
  ,,b_len: len (b)=
  ,,如果len (b)比;马克斯{
  ,,,,,,返回nil,错误。新(“形象没有足够空间的影子。”)
  ,,}
  ,,头:=BuildShadowHeader (uint32 (b_len))
  ,,var bb字节
  ,,var bs[8]字节
  ,,var我int
  ,,,呃=SetImage (im, func (int指数,x, y,, image.Image) {
  ,,,,,,rgba:=readRGBAColor (im。在(x, y))
  ,,,,,,如果指数& lt;b_len * 8 + 64 {
  ,,,,,,,,,,如果指数& lt;64年{
  ,,,,,,,,,,,,,,bb=头(指数/8)
  ,,,,,,,,,,其他}{
  ,,,,,,,,,,,,,,bb=b[索引/8]
  ,,,,,,,,,,}
  ,,,,,,,,,,b=Byte2bits (bb)
  ,,,,,,,,,,我=指数% 8
  ,,,,,,,,,,如果b[我]!=rgba.R& 1 {
  ,,,,,,,,,,,,,,如果b[我]==0 {
  ,,,,,,,,,,,,,,,,,,rgba。R -=1
  ,,,,,,,,,,,,,,其他}{
  ,,,,,,,,,,,,,,,,,,rgba。R +=1
  ,,,,,,,,,,,,,,}
  ,,,,,,,,,,}
  ,,,,,,}
  ,,,,,,如果v:=(* image.RGBA);v !=nil {
  ,,,,,,,,,,v。rgba SetRGBA (x, y)
  ,,,,,,}
  ,,})
  ,,如果犯错!=nil {
  ,,,,,,返回nil,犯错
  ,,null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

去语言实现将重要数据写入图片中