我想对我所编写的软件进行加密,具体设想如下:
我的程序中有一个splash启动画面(bmp格式),我想将该图片以二进制方式读出来,然后在该二进制文件中插入类似于密钥之类的东西,当程序启动时,读取该二进制文件,如果有密钥,则进入系统,否则提示出错退出。不知这样该如何实现?各位高手还有其他好的软件加密方法吗,最好有源代码?

解决方案 »

  1.   


    http://www.csdn.net/cnshare/soft/14/14147.shtm
      

  2.   

    up================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  3.   

    to: xc(xc)
    这个确实是个问题,我也考虑到了,但我现在只想实现,以后在考虑被跟踪的情况
      

  4.   

    有那种软件~
    利用BMP文件的某些段来添加exe文件~
    你可以利用那些空白的地方添加你的数据~
    研究一下BMP文件的格式吧……
      

  5.   

    to:rivershan(笨猫)(C++/MFC/COM初学者
    哪儿有?
      

  6.   

    这个东西我做过,不过我用的是vb的SavePicture然后得到一幅图片,读取一个像素的一位。至于软件加密,微软用的是曲线加密算法,简单加密就行了,整的太深也不好
      

  7.   

    可以,对BMP文件的细微修改,不会影响视觉效果。
      

  8.   

    对,可以改变BMP文件的一些细节,根据人眼的原理,三原色(红绿蓝)各只有前5:8:3位有用,修改这些位不会改变视觉效果!因此,你可以将信息加载在这些位上,然后,再相应修改一下解码程序!
      

  9.   

    我们知道,bmp文件头部有几个域,分别是:像素高度、像素宽度,位平面个数,每位占用的像素数目,根据这四个域能够计算出这个bmp文件的有效长度(即文件头部+可能的调色板+位图数据等),
    int GetDIBPixelSize(const BITMAPINFOHEADER & bmih)
    {
    if ( bmih.biSizeImage )
    return bmih.biSizeImage;
    else
    return ( bmih.biWidth * bmih.biBitCount + 31 ) / 32 * 4 * bmih.biPlanes * abs(bmih.biHeight);
    }
    在该有效长度之后,随便你放什么东西都不会对该位图的显示有影响,你的密钥等就可以放在这里。
      

  10.   

    int GetDIBColorCount(const BITMAPINFOHEADER & bmih)
    {
    if ( bmih.biBitCount <= 8 )
    if ( bmih.biClrUsed )
    return bmih.biClrUsed;
    else
    return 1 << bmih.biBitCount;
    else if ( bmih.biCompression==BI_BITFIELDS )
    return 3 + bmih.biClrUsed;
    else
    return bmih.biClrUsed;
    }
    ......
    BITMAPFILEHEADER bmFH; int nHeadSize = sizeof(BITMAPINFOHEADER) + 
    sizeof(RGBQUAD) * GetDIBColorCount(pBMI->bmiHeader); bmFH.bfType      = 0x4D42;
    bmFH.bfSize      = nHeadSize + GetDIBPixelSize(pBMI->bmiHeader);  //这是文件的有效长度。
      

  11.   

    其实你判断的密钥也不会很大,以binary方式打开bmp后,可以加入冗余信息(只要位置合适不会影响图片颜色),然后按特定地址去取不就ok了,至于bmp,jpeg等的文件格式,可以看一些白皮书或相关资料(比如清华大学的多媒体基础知识等)