Project1

标题: Bitmap化数据【加密】【可用于加密存档】 [打印本页]

作者: 灵魂の补给    时间: 2011-8-20 08:08
标题: Bitmap化数据【加密】【可用于加密存档】
本帖最后由 灵魂の补给 于 2011-8-20 09:01 编辑

这个脚本可以把传入数据加密成bitmap,你可以加入储存PNG脚本,就可以保存下来。也可以从图片中解密数据。
加密细节不公开,请大家也不要去看吧。可以用来加密存档,不过需要设置下。
这个加密,支持汉字。

左上角就是由透明图片填充的数据块。
好了,下载在这里:(这个工程有4种脚本,本脚本请与图上树干右事件对话。)防止此脚本被人使用太多,容易破解,设置了权限。

脚本部分:
  1. #==============================================================================
  2. # ■ Sprite_Save ≮1版块≯
  3. #------------------------------------------------------------------------------
  4. #   位图数据库  作者:END66RPG
  5. #    操作法:
  6. #Sprite_Save.new(viewport,"加密","save and load")
  7. #    或者:
  8. #XXX.update2(mode)
  9. #XXX.data = "数据"
  10. #==============================================================================
  11. class Sprite_Save < Sprite
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #     viewport : 显示端口
  15.   #     picture  : 图片 (Game_Picture)
  16.   #--------------------------------------------------------------------------
  17.   def initialize(viewport, mode, file, data="")
  18.     super(viewport)
  19.     @mode = mode
  20.     @file = file
  21.     @data = data
  22.     update
  23.   end
  24.   def make_png(e)
  25.     eval"self.bitmap.#{e}"
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 释放
  29.   #--------------------------------------------------------------------------
  30.   def dispose
  31.     if self.bitmap != nil
  32.       self.bitmap.dispose
  33.     end
  34.     super
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 更新画面
  38.   #--------------------------------------------------------------------------
  39.   def update
  40.     super
  41.     #p @file
  42.     self.bitmap = RPG::Cache.picture(@file)#Bitmap.new('Graphics/Icons/gem_02.png')
  43.     self.zoom_x = 10#@picture.zoom_x / 100.0
  44.     self.zoom_y = 10#@picture.zoom_y / 100.0
  45.     case @mode
  46.     when "加密"
  47.       jiami
  48.     when "解密"
  49.       jiemi
  50.     end
  51.     @mode = ""
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ● 更新画面2
  55.   #--------------------------------------------------------------------------
  56.   def update2(mode)
  57.     case mode
  58.     when "加密"
  59.       jiami
  60.     when "解密"
  61.       jiemi
  62.     end
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 更新画面3
  66.   #--------------------------------------------------------------------------
  67.   def data=(new_data)
  68.     @data = new_data
  69.   end
  70. end
复制代码
  1. #==============================================================================
  2. # ■ Sprite
  3. #------------------------------------------------------------------------------
  4. #==============================================================================
  5. #==============================================
  6. # ■ Sprite_Save ≮2版块≯
  7. #    解密
  8. #==============================================
  9. class Sprite_Save < Sprite
  10.   def jiemi
  11.     data = ""
  12.     break_switch = nil
  13.     for y in 0..(self.bitmap.height-1)
  14.       if break_switch != nil
  15.         break_switch = false
  16.         break
  17.       end
  18.       for x in 0..(self.bitmap.width-1)
  19.         color = self.bitmap.get_pixel(x, y)
  20.         #p"x#{x} y#{y}"
  21.         if color.alpha == 0
  22.           break_switch = true
  23.           break
  24.         end
  25.         if color.alpha.round == 200 #if the data is chinese words,
  26.           red = color.red.round.chr.to_s
  27.           green = color.green.round.chr.to_s
  28.           blue = color.blue.round.chr.to_s
  29.           china_b    = "中"
  30.           china_b[0] = red
  31.           china_b[1] = green
  32.           china_b[2] = blue
  33.           #china_b.gsub!(/\\(.)/) { $1 }
  34.           data += china_b#EasyConv.back_chr(china_b).scan(/./)[0]
  35.           next
  36.         end
  37.         data += color.red.round.chr unless color.red.round.chr == "*"
  38.         data += color.green.round.chr unless color.green.round.chr == "*"
  39.         data += color.blue.round.chr unless color.blue.round.chr == "*"
  40.       end
  41.     end
  42.     #p data
  43.     #eval(data)
  44.     #File.open("jiemi.txt","w+").write(data)
  45.     return data
  46.   end
  47. end
复制代码
  1. #==============================================================================
  2. # ■ Sprite_Save ≮3版块≯
  3. #------------------------------------------------------------------------------
  4. #    加密
  5. #==============================================================================

  6. class Sprite_Save < Sprite
  7.   def forward(x)
  8.     if x == (self.bitmap.width-1)#63
  9.       @x = 0
  10.       @y = 1
  11.     else
  12.       @x = 1
  13.       @y = 0
  14.     end
  15.   end
  16.   def jiami
  17. ##############初始化################
  18.     #data = "print'this game good'"
  19.     #data += ";@mouse_sprite = Sprite.new"
  20.     #data += ";@mouse_sprite.z = 99999"
  21.     #data += ";@mouse_sprite.bitmap = Bitmap.new('Graphics/Pictures/海底生物10.PNG');p'123467890'   "
  22.     @data += "   "
  23.     data = @data.split("")
  24.     b = []
  25.     x,y = 0,0
  26.     time = 0
  27. ####################################

  28. #################取出每个字#########
  29. data.each{|c|
  30. time += 1
  31. 此是中文 = false
  32. if time == (data.size+1) and b.size > 0 and b.size < 3
  33.   b.push("\n")
  34. end
  35. if time==data.size and b.size > 0 and b.size < 3
  36.   b.push(data[-1])
  37.   b.push("\n")
  38. end
  39. if b.size >= 3
  40. ###############普通转码#####################
  41.   b[0]#red
  42.   b[1]#green
  43.   b[2]#blue
  44.   if self.bitmap.get_pixel(x, y).alpha.round == 200
  45.     forward(x)
  46.     y += @y
  47.     @x == 0 ? x = 0 : x += @x
  48.   end
  49.   color = Color.new(b[0][0],b[1][0],b[2][0],255)
  50.   self.bitmap.set_pixel(x, y, color)
  51.   b = []
  52.   #p x
  53.   forward(x)
  54.   y += @y
  55.   @x == 0 ? x = 0 : x += @x
  56. ################普通转码完毕####################
  57. end
  58.   if b.size < 3
  59.     if c.size > 1#如果是中文的情况
  60.       if b.size < 3 and b.size > 0
  61.         b.push "*" if b.size == 2
  62.         if b.size == 1
  63.           b.push "*"
  64.           b.push "*"
  65.         end
  66.         if self.bitmap.get_pixel(x, y).alpha.round == 200
  67.           forward(x)
  68.           y += @y
  69.           @x == 0 ? x = 0 : x += @x
  70.          
  71.         end
  72.         color = Color.new(b[0][0],b[1][0],b[2][0],255)
  73.         self.bitmap.set_pixel(x, y, color)
  74.         b = []
  75.         forward(x)
  76.         y += @y
  77.         @x == 0 ? x = 0 : x += @x
  78.       end
  79.         
  80.       if self.bitmap.get_pixel(x, y).alpha.round == 200
  81.         forward(x)
  82.         y += @y
  83.         @x == 0 ? x = 0 : x += @x
  84.       end
  85.       china_b = c#EasyConv.chr(c)#3字节
  86.       #china_b = china_b.scan(/./)#每个字节分割成1组
  87.       if china_b.size < 3
  88.         #p"此“#{i}”字很有可能破解失败!#{b}"
  89.         (3-china_b.size).times{china_b.push("\000")}
  90.       end
  91.       red = china_b[0]#[0]#.to_i#每个字节变成字码
  92.       green = china_b[1]#[0]#.to_i
  93.       blue = china_b[2]#[0]#.to_i
  94.       china_c = Color.new(red,green,blue,200)
  95.       self.bitmap.fill_rect(x, y, 1, 1, china_c)#200 = 中文判断
  96.       #p c
  97.     else
  98.       b.push c
  99.     end
  100.   end
  101.   
  102. }
  103. ##############取出每个字-END######################
  104.   end
  105.   
  106. end
复制代码






about bitmap.rar

3.58 MB, 下载次数: 171


作者: yangff    时间: 2011-8-20 10:10
=v=你已经公开了
作者: 逸豫    时间: 2011-8-25 19:08
任何没有加密脚本文件的加密方式都如同〇〇膜一样脆弱不堪

作者: 囧囧orz    时间: 2011-8-25 21:49
五分啊 我才可怜的一分




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1