精华内容
下载资源
问答
  • 循环位移加密二进制数据#include "stdafx.h" void encode(char * p, int n) { for (int i = 0; i<n; i++) { unsigned char ch = p[i];//将值赋给无符号的变量,方便之后移位的操作 (首位移动...

    循环位移加密二进制数据

    #include "stdafx.h"
    
    void encode(char * p, int n)
    {
    	for (int i = 0; i<n; i++)
    	{
    		unsigned char ch = p[i];//将值赋给无符号的变量,方便之后移位的操作 (首位移动用0补位)
    		ch = ((ch << 1) | (ch >> 7));
    		p[i] = ch;
    	}
    }
    
    
    void decode(char *p, int n)
    {
    	for (int i = 0; i<n; i++)
    	{
    		unsigned char ch = p[i];
    		ch = ((ch >> 1) | (ch << 7));
    		p[i] = ch;
    	}
    
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	FILE* fpr = fopen("2.wmv", "rb"); //需要改相应文件
    	if (fpr == NULL)
    		return -1;
    
    	FILE* fpw = fopen("3.wmv", "wb"); //需要改相应文件
    	if (fpw == NULL)
    		return -1;
    
    	int n = 0; char buf[1024];
    	while ((n = fread((void*)buf, sizeof(char), 1024, fpr))>0)
    	{
    		decode(buf, n);//encode(buf, n);
    		fwrite((void*)buf, n, 1, fpw);
    	}
    
    	fclose(fpr);
    	fclose(fpw);
    
    	return 0;
    }

    展开全文
  • 1.EOF ...在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。 2.函数feof  函数原型: int feof(FI...

    1.EOF

    代表-1,在文本中会被解析为减号和1两个字符,或更精确地说成C标准函数库中表示文件结束符(end of file)。在这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。


    2.函数feof  

    函数原型: int feof(FILE *fp)

    功能:判断文件是否结束

    返回值:文件结束,返回真(非0),文件未结束,返回0

     

    3.实例

    • 非密码加密  txt
      #define  _CRT_SECURE_NO_WARNINGS
      #include <stdio.h>
      #include <stdlib.h>
      
      
      void jia(char *path,char *newpath)
      {
          FILE *pfr = fopen(path, "r");
          FILE *pfw = fopen(newpath, "w");
      
      
      
          char ch = 0;
          while (ch != EOF) //EOF 文件结束
          {
              ch = fgetc(pfr);//读取,EOF
              if (ch != EOF)
              {
                  ch += 1;
                  fputc(ch, pfw);
              }
      
          }
          fclose(pfr);
          fclose(pfw);
      
      }

      void jie(char *path, char* newpath) { FILE *pfr = fopen(path, "r"); FILE *pfw = fopen(newpath, "w"); char ch = 0; while (ch != EOF) //EOF 文件结束 { ch = fgetc(pfr);//读取,EOF if (ch != EOF) { ch -= 1; fputc(ch, pfw); } } fclose(pfr); fclose(pfw); } void main() { char *path = "C:\\Users\\sjx\\Desktop\\test\\Q.txt"; char *pathjia = "C:\\Users\\sjx\\Desktop\\test\\Qjia.txt"; char *pathjie = "C:\\Users\\sjx\\Desktop\\test\\Qjie.txt"; jia(path, pathjia); jie(pathjia, pathjie);//路径 system("pause"); } system("pause"); }

       


       

    • 根据密码加密  (二进制文件加密解密)
      #define _CRT_SECURE_NO_WARNINGS
      #include <stdio.h>
      #include <stdlib.h>
      
      char *path = "C:\\Users\\sjx\\Desktop\\test\\Q.exe";
      char *pathjia = "C:\\Users\\sjx\\Desktop\\test\\Qjia.exe";
      char *pathjie = "C:\\Users\\sjx\\Desktop\\test\\Qjie.exe";
      
      void run(char *path, char *newpath)
      {
          FILE *pfr = fopen(path, "rb");
          FILE *pfw = fopen(newpath, "wb");
          if (pfr==NULL || pfw ==NULL)
          {
              return;
          } 
          else
          {
              char  ch;
                  while (!feof(pfr))
                  {
                  char ch = fgetc(pfr);
                  char newch = ch ^ 3;
                  fputc(newch, pfw);
                  }
              fclose(pfr);
              fclose(pfw);
          }
      
      
      }
      
      void main()
      {
      
          run(path, pathjia);
          run(pathjia, pathjie);
          /*printf("%d", getfilesizeseek(path));*/
      
          system("pause");
      }

       

    3.获取二进制文件的大小

    • 函数fseek,用以控制、调整文件指针的值,从而改变下一次读写操作的位置
    • 函数原型:int fseek(FILE * fp, long offset, int startPos);
    • fp是文件指针,startPos是起始点,offset是目标位置相对起始点的偏移量,正数表示正向偏移(向右),负数表示负向(向左)偏移,如果函数操作执行成功,文件位置指针将被设定为“起始点+offset”,起始点并不是任意设定的,C语言给出了3中起始点方式,如所示:

         

     

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    
    char *path = "C:\\Users\\sjx\\Desktop\\test\\Q.exe";
    char *pathjia = "C:\\Users\\sjx\\Desktop\\test\\Qjia.exe";
    char *pathjie = "C:\\Users\\sjx\\Desktop\\test\\Qjie.exe";
    
    int getfilesize(char *path)
    {
        int i = -1;
        FILE *pfr = fopen(path, "rb");
        if (pfr == NULL )
        {
            return -1;
        }
        else
        {
            while (!feof(pfr))
            {
                char ch=fgetc(pfr);
          
                i++;//读取一个字符,前进一次
            }
    
    
            fclose(pfr);
            return i;
        } 
    }
    
    int getfilesizeseek(char *path)
    {
        
        FILE *pfr = fopen(path, "rb");
        if (pfr == NULL)
        {
            return -1;
        }
        else
        {
            fseek(pfr, 0, SEEK_END);//文件指针移动末尾
            int length = ftell(pfr);//得到文件位置指针当前位置相对于文件首的偏移字节数
    
            fclose(pfr);
            return length;
            
        }
    }
    
    int main()
    {
    
        run(path, pathjia);
        run(pathjia, pathjie);
        /*printf("%d", getfilesizeseek(path));*/
    
        system("pause");
    }

     

    转载于:https://www.cnblogs.com/sjxbg/p/5812688.html

    展开全文
  • swf文件二进制数据加密基础

    千次阅读 2013-01-29 10:28:53
    现在新建一个类EncryptTool.as,他的作用就是对这个动画加密。这里要注意的是,因为要加密文件,就会涉及本地文件读写操作,普通flash player是不支持的,需要建立AIR工程运行。在说明加密解密方法之前,先解释一些...
        现在新建一个类EncryptTool.as,他的作用就是对这个动画加密。这里要注意的是,因为要加密文件,就会涉及本地文件读写操作,普通flash player是不支持的,需要建立AIR工程运行。
    在说明加密解密方法之前,先解释一些理论方面的东西,很草根。
        swf加密的目的。其实无论是flash的swf文件加密,还是其他各种加密,目的都是很简单,就是私心,不想泄露具体文件细节。当然这也是大环境趋势,在中国很多拿来主义,大家懂得。swf文件的加密,主要目的我分为两个:
        1.flash代码加密,比如商业游戏的代码,被盗用总是不好。
        2.flash素材加密,防止被一些工具破解盗用,用flash做动画的朋友应该深有体会。
        文件格式。什么是文件格式,百度百科是这样介绍:文件格式(或文件类型)是指电脑为了存储信息而使用的对信息的特殊编码方式,是用于识别内部储存的资料。简单点理解,所有的文件都是二进制数据,而特定格式的文件(比如图片文件、视频文件等)都是按照一定规律排列的二进制数据,只不过后面会加类似“.swf”这样的后缀加以辨识。
        这样的话,针对上面swf加密目的,加密的理论方法自然就诞生了。
        swf加密的方式
        如果是加密代码,那么就用一些工具做代码混淆,降低可读性,即使破解了,也看不懂,那就白破解了。网上有一些工具比较适用,比如doswf。
        如果是加密素材,那就需要破坏文件,让破解工具无法解析数据,这样就能保护文件。破坏文件,就是破坏二进制数据,破坏上面所说的文件格式。当然也不能随便破坏,因为一旦文件破坏,不但别人无法破解你的文件,自己的文件也无法正常运行,就本末倒置了。所以,需要有规律性的破坏,这个破坏方式也就是一些加密算法
        那么,现在自己的文件是被加密被破坏了,但是也没法用了,为了达到正常使用的目的,我们需要另外一个程序,即是解密算法。解密算法是跟加密算法正好相逆,一个破坏文件,一个修复文件,以达到正常使用的目的。

        (注:前面的几段还是上周六写的,后来不小心,脚被石头砸了一下,虽说没有血肉模糊,但还是比较疼,这里也提醒各位朋友,怀里揣着石头的,该放的时候早放,放晚了,就砸脚了……继续接着写吧)

         所以,目前我能想到的加密方法是,子文件要同时做混淆代码和加密文件两个步骤,而主文件内,要带有解密代码,同时要混淆这一段代码,防止被破解。

        用一个小例子演示一下。这里我先用flash随便做个小动画,里面是一张图,生成的文件我命名为“未命名-1.swf”。这里,这个小动画就是子文件,现在我要对它加密。

        摘取部分代码解释一下加密过程。


        _urlLoader = new URLLoader();
        _urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
       _urlLoader.addEventListener(Event.COMPLETE, loaded);
         _urlLoader.load(new URLRequest("未命名-1.swf"));

    上面这段代码意思就是把这个动画以二进制数据方式加载读取,然后加载完成后,会触发下面这个方法。


         private function loaded(e:Event):void
        {
           _urlLoader.removeEventListener(Event.COMPLETE, loaded);
           var data:ByteArray = _urlLoader.data as ByteArray; //用二进制数组保持读取的数据
           var key:String = "this is a test"; //我们设定密码key为这串字符
           var keyBytes:ByteArray = new ByteArray();
           keyBytes.writeObject(key); //把这串字符转换为二进制数组
    
           //下面就是加密算法
           var p:int  = data.length / 2; //获取原始数据中间的位置索引
           var b1:ByteArray = new ByteArray();
           for(var i:int = 0; i < keyBytes.length; i ++){
              b1.writeByte(data[i + p] ^ keyBytes[i])
           }
           //上面的这段循环,主要意思是,把密码数据跟原始数据做一次运算,即从原始数据中间位置,取跟密码数据相同字节数的数据,他们做一次异或运算,然后把运算结果存储到一个二进制数组中。
           //不知道什么是异或运算的,百度一下,其实我也是刚查的……
           data.position = p; //把原始数据位置调整到中间位置
           data.writeBytes(b1); //从中间位置,把刚才运算后的数据全部替换进去
    
           //上面中间就是加密的过程,这个稍微有点麻烦了。也有更简单的,比如把首位字节对调等等。
           //上面数据加密过了,现在需要把这串加密后的数据保存成一个文件,为了方便,依然保存为swf文件。
           var file:File = new File("C:/Documents and Settings/user/桌面/加密解密/DecryptTool/src/mc.swf");
           var fs:FileStream = new FileStream();
           fs.open(file, FileMode.WRITE);
           fs.writeBytes(data);
           fs.close();

    好了,上面已经保存一个加密后的文件了,也就是对应文件夹里面的“mc.swf”,虽然看起来还是普通的swf动画文件,但是如果你直接打开,会发现,什么都没有,一片空白。这个时候,再尝试用闪客精灵之类的破解软件破解这个动画,会弹出“文件被破坏”的提示。没错,文件被破坏了,被加密,当然无法破解。
       
        文件被加密了,但是也没法正常运行了,这个时候,就需找在使用的地方对它进行解密了。新建一个类DecryptTool.as,这个不需要AIR工程,普通正常就行。现在假定这里需要使用这个动画,那么,解密开始。
        同样,首先得把加密后的文件以二进制数据方式加载进来。

         _urlLoader = new URLLoader();
            _urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
            _urlLoader.addEventListener(Event.COMPLETE, bytesLoaded);
            _urlLoader.load(new URLRequest("mc.swf"));

    加载完成后,触发下面这个方法。


    private function bytesLoaded(e:Event):void
        {
            _urlLoader.removeEventListener(Event.COMPLETE, bytesLoaded);
            var data:ByteArray = _urlLoader.data as ByteArray; //同样,保存读取的数据,这是加密后的
          
             //下面的解密运算,跟加密运算方式一样,原因是异或运算,逆向运算跟之前的看起来没有任何区别
             var key:String = "this is a test";
             var keyBytes:ByteArray = new ByteArray();
             keyBytes.writeObject(key);
            var p:int  = data.length / 2;
            var b1:ByteArray = new ByteArray();
            for(var i:int = 0; i < keyBytes.length; i ++){
                b1.writeByte(data[i + p] ^ keyBytes)
            }
            data.position = p;
            data.writeBytes(b1);
            //上面得到的是解密后的数据,这是完整的数据,跟之前读取的"未命名-1.swf"的数据时一模一样的,因为这个步骤就是还原数据的作用。这个时候,如果你把这段数据保存为一个swf文件,会发现这个文件能正常使用,位图什么都正常显示,跟之前的源文件没有任何区别。
           //得到完整数据后,用Loader读取这段二进制数据,注意下面加粗的这几行代码,很重要,否则会报错说不支持swf。

        _loader = new Loader();     
             _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
             var lc:LoaderContext = new LoaderContext();
             lc.allowCodeImport = true;
             _loader.loadBytes(data, lc);

    上面读取数据完成后,继续出发下面的这个方法。

        private function loaded(e:Event):void
            {
               _loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loaded);
               var mc:MovieClip = _loader.content as MovieClip;
               addChild(mc);
            }

    上面的这个程序就是从二进制数组中,通过Loader,得到一个影片剪辑,此时,程序中的动画可以正常播放了,说明解密成功。

         加密解密的基础思路就是这样,当然,别忘了对解密代码做混淆操作,要不然,无用功都白做了。如果不混淆也行,只要不懂代码,只靠一个闪客精灵,是破解不出子文件的素材。
         代码混淆,暂时还未实验,不做演示了,下载工具自行摸索吧。

         加密不是万能的,肯定会有大牛能解出来。不过,利用这点基础,防防小菜鸟跟个别破解工具还是可以的。道高一尺,魔高一丈,加密之路永无止境。

         顺便吐槽一下新浪博客,没有插入代码的功能,结果自己手动排版代码浪费很多时间。
         代码排版真难受,这个也是,总是出问题


    http://blog.sina.com.cn/s/blog_71f1fb3701015s29.html




    展开全文
  • JavaClass文件加密专家通过分析Class文件的结构,将Class二进制代码中耗时较多的部份抽出并替换为Native C代码, 并且使用1024位加密算法将Class文件数据加密,任何Java反编译工具均不可能对加密后的文件...
  • 安全兼容加密示例 创建该存储库是为了解决越来越多的在互联网上浮现的不良加密代码示例。 随着时间的推移,该存储库将进行扩展,以包含更多语言的示例。 随着2018年10月,有跨越5个不同的平台,14种语言16倍不同的...
  • python文件二进制加密

    千次阅读 2018-04-19 09:26:04
    简介:简单的文本文件加密:输入待加密文件和n,将文件转成二进制文件,对原始文件为n的整数倍的字节处将二进制数据取反进行加密,解码时再对这些二进制取反,中间储存过程都是二进制文件,达到简单的加密效果。...

    简介:

    简单的文本文件加密:输入待加密文件和n,将文件转成二进制文件,对原始文件为n的整数倍的字节处将二进制数据取反进行加密,解码时再对这些二进制取反,中间储存过程都是二进制文件,达到简单的加密效果。

    1、编码:

    def encode(s):
        return ' '.join([bin(ord(c)).replace('0b', '') for c in s])

    将字符串s转成二进制形式。

    (1)bin() 返回一个整数 int 或者长整数 long int 的二进制表示。

    语法:bin(x)

    参数:x -- int 或者 long int 数字

    返回值:字符串

    实例:

    >>>bin(10)

    '0b1010'

    >>> bin(20)

    '0b10100'

    (2)ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

    语法:ord(c)

    参数:c -- 字符。

    返回值:字符串

    实例:

    >>>ord('a')

    97

    (3)replace(),将字符串前面的'0b'替换成''

    (4)join函数将生成的二进制序列字符串重新组合成一个字符串

    2、解码

    def decode(s):
        return ''.join([chr(i) for i in [int(b, 2) for b in s.split(' ')]])

    (1)chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

    语法:chr(i)

    参数:i -- 可以是10进制也可以是16进制的形式的数字。

    返回值:返回值是当前整数对应的ascii字符。

    实例:

    >>>print chr(0x30), chr(0x31), chr(0x61) # 十六进制

    0 1 a

    >>> print chr(48), chr(49), chr(97) # 十进制

    0 1 a

    3、二进制按位取反

    def reverse(s):
        return ''.join(str(1^int(c)) for c in s)

    (1)异或 ^:0^0=1,0^1=0,1^0=0,1^1=1,就是相同时值为1,不同时为0。


    4、程序两个主函数

    readOriginFile(arg1, arg2, arg3)

    #第一个参数是输入文件,

    #第二个参数是二进制码取反的位置(字节),

    #第三个加密的二进制码的输出文件

    readBinaryFile(arg1, arg2, arg3)

    #第一个参数是加密二进制码文件,

    #第二个参数是二进制码取反的位置(字节),

    #第三个解码的输出文件

    效果:

    5、链接:点击打开链接

    展开全文
  • 注意,本工具只适用于分析单字节的简单加密,包括简单的替换密码,异或加密,增减密码,二进制的位运算。。。这些一对一,或者少量一对多的加密方式。 使用时请用十六进制编辑器复制密文和原文到两个txt中,不要用...
  • 简单的二进制加密.e

    2011-06-30 17:29:03
    用易语言做数据加密工作,用二进制加密即简单,又安全哦
  • WebSocket 二进制传输 AES加密和解密

    千次阅读 2018-07-25 20:03:59
    最近一直在弄WebSocket,然后必然会遇到二进制传输 1.客户端设置 // 二进制方式接收数据 ws.binaryType = 'arraybuffer';...2.php服务端发送和接收加密二进制数据 /** * openssl aes 加密 */ function c...
  • 插入的是加密过后的二进制数据 我对比过直接在mysql 和 通过my cat发送到mysql的建表语句 是一样。 password字段是tinyblob(建表语句里) 所以问题在使用mycat插入该数据的时候 比如是16位的二进制数据。 再通过...
  • 一下代码 实现了 base64编解码,目的是可以传输二进制数据,脚本兼容utf8,该脚本也可以用作简单的加密。This javascript code is used to encode / decode data using base64 (this encoding is d
  • 用于二进制数据传输的流库 描述 该库旨在为所有主要存储系统(文件系统,AWS S3,Google Cloud Storage等)提供统一的API。 当从这些存储系统上载/下载数据流时(压缩/校验和计算/加密等),它还提供了一种操作数据...
  • RansomCoin是一款DFIR工具,可以帮助广大研究人员从二进制源码文件中提取加密货币地址以及其他的入侵威胁指标IoC。RansomCoin支持提取的包括勒索软件的元数据以及硬编码的入侵威胁指标IoC,它能够以一种可扩展的、...
  • 在做冬奥组委项目中,甲方要求加密数据库明文信息,在执行中因为数据中有异常信息,如大字体数据,造成上面的问题       主要原因就是你增加的数据字段长度超过数据库中字段所定义长度,去查看一下自己数据库...
  • 一个简单的例子: string str = "你好好呀,呵呵呵!...//把字符串转化为byte二进制数组 byte[] bt = System.Text.Encoding.UTF8.GetBytes(str); foreach (byte item in bt) { Console.WriteLine(item); } //...
  • 最近做个项目:需要对数据进行加密的.开发工具使用delphi6但是delphi6没有好的加密方法,于是采用微软的Crypt。方案如下:delphi6调用vc2003写的COM(使用Crypt加密,使用vs... ole delphi项目中保存二进制字段并没有采
  • Base64编码主要用在传输、存储、表示二进制等领域,还可以用来加密,但是这种加密比较简单. byte[] byteArray = Encoding.UTF8.GetBytes(content);content = Convert.ToBase64String(byteArray); 开发者对 ...
  • 两种加密写入文件的写法,先介绍第一种 public class EncryptAndDecryptFile { public static string outputFile; static string password = @"12345678"; //加密 public static void EncryptFile(byte[] ...
  • 1、Java代码生成加密数据,并保存为二进制流文件 (电脑上的图片就是二进制流文件,只不过我们打开的时候,借助于电脑软件渲染为图片) 上代码片段: 1 byte[] oneshotBytes = reqParms.getBytes(); 2 ...
  • redis二进制安全

    千次阅读 2019-04-01 19:11:48
    二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改、破译等,如果被攻击,能够及时检测出来。 二进制安全包含了密码学的一些东西,比如加解密、签名等。 举个例子,你把数据11110000加密成...
  • 2、对输入的字符进行加密并保存,以二进制文件方式保存,用户可以输入保存路径, 如:C:\file.txt ; 3、打开文件时,对加密文件进行解密并显示在屏幕上。 分析: 1、字符串的输入可以用getchar()进行逐个输入,...
  • 二进制安全

    2013-06-25 16:11:00
    二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改、破译等,如果被攻击,能够及时检测出来。二进制安全包含了密码学的一些东西,比如加解密、签名等。举个例子,你把数据11110000加密成...
  • public class EncryptAndDecryptFile { public static string outputFile; static string ... //加密 public static void EncryptFile(byte[] fileByte, string name) { try { UnicodeEncoding UE = new.
  • 二进制数据的序列化反序列化和Json的序列化反序列化的重要区别  前言:最近一个一个很奇怪的问题,很明白的说,就是没看懂,参照下面的代码: /// <summary> /// 反序列化对象 /// </...
  • 但有时后端返回的是图片的二进制流,如验证码这种随机生成的图片,同时图片的二进制流还是经过Base64加密后的。 处理办法: 使用 Data URI scheme Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接...
  • 数据加密

    2017-04-25 10:05:02
    单向加密 crypt MD5 全称Message Digest,即信息摘要算法。...非二进制数据加密 Base64加密。加密后的串空间增加33%左右。 更加安全的PHP加密扩展 MCrypt 支持双向加密解密 MHASH 更加安全的加密算法,支持MD5方式
  • 加密二进制 组合和反汇编加密货币应用程序中使用的二进制消息。 消息生成器 从数据块中组装二进制消息。 所有方法都返回生成器本身,因此可链接。 一般用法是使用各种put*方法,然后调用raw()将输出作为 Buffer 获取...
  • PHP 16进制加密函数

    2015-07-15 11:50:28
    // 转换16进制 bin2hex($str);...page 解释 把数据装入一个二进制字符串。 语法 pack(format,args+) 参数 描述 format 必需。规定在包装数据时所使用的格式。 args+

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,151
精华内容 860
关键字:

二进制数据加密