C写的一个解密ASCII加密的小工具
2008/06/22 01:21 by hackest 本站原创
题目:C写的一个解密ASCII加密的小工具
作者:hackest [H.S.T.]
来源:hackest's blog

很久很久以前(英文版:Long long time ago.)
也就是我年轻的时候,在注入某些网站的时候
猜解的结果是一种比较奇怪的加密密码

比如如下密文:
bfpms (admin)
lg6;8>9; (ke373823)


看起来确实比较怪异吧
这几天发现有人在群里又问到与此相关的话题
网上查了下也好像没有太多关于这个的资料
也难怪有些小菜菜不会解密了,嘿嘿……
不过,有我这样以“为菜鸟解惑”为己任的装X客
自然不会让小菜们难办的咯

其实这个是勉强可以说是ASCII加密
加密算法是:字符的ASCII值第N位加N
比如admin的加密过程是这样的:

1、根据加密算法可以知道a字符的加密过程如下:

字符a是字符串admin中的第1位
a的加密过程就是:字符a的ASCII值+1=字符a加密后的字符
字符a的ASCII值为97,97+1=98
ASCII值为98的字符查表可以知道为字符b

2、根据加密算法可以知道b字符的加密过程如下:

字符d是字符串admin中的第2位
d的加密过程就是:字符d的ASCII码+2=字符d加密后的字符
字符d的ASCII值为100,100+2=102
ASCII值为102的字符查表可以知道为字符f

3、根据加密算法可以知道m字符的加密过程如下:

字符m是字符串admin中的第3位
m的加密过程就是:字符m的ASCII码+3=字符m加密后的字符
字符m的ASCII值为109,109+3=112
ASCII值为112的字符查表可以知道为字符p

4、根据加密算法可以知道i字符的加密过程如下:

字符i是字符串admin中的第4位
i的加密过程就是:字符i的ASCII码+4=字符i加密后的字符
字符i的ASCII值为105,105+4=109
ASCII值为109的字符查表可以知道为字符m

5、根据加密算法可以知道n字符的加密过程如下:

字符n是字符串admin中的第5位
n的加密过程就是:字符n的ASCII码+5=字符n加密后的字符
字符n的ASCII值为110,110+5=115
ASCII值为115的字符查表可以知道为字符s

综上所述:字符串admin加密后的结果就是bfpms
当然介绍加密算法过程的不是我们的目的
这只是帮我们了解算法到底是如何加密的
对于小菜菜们来说,怎么解密才是重中之重

现在我们知其然,更知其所以然
解密就好办多了,我用我仅有的一点点编程功力
用C写了个小工具,代码是以前写的了
我就懒得改了,在邪恶八进制上面发布过的

以下代码在DEV C++下编译通过:
引用

#include
#include

main()
{
  int any,i;
  char *encode,*decode;
  printf("******************************************\n");
  printf("欢迎使用此解密工具^_^                                       *\n");
  printf("by:hackest[E.S.T]                                                *\n");
  printf("欢迎访问:http://forum.eviloctal.com                     *\n");
  printf("******************************************\n");
  printf("\n");
  printf("请输入密码长度:");
  scanf("%d",&any);
  encode=(char *)malloc(any+1);
  decode=(char *)malloc(any+1);
  getchar();
  printf("请输入密码密文:");
  for(i=0;i  {scanf("%c",encode+i);
  if(encode=='\n')break;
  decode=encode-i-1;
  }
  encode='\0';
  decode='\0';
  printf("密码解密明文为:%s\n",decode);
  return 0;
  }

运行示例:
点击在新窗口中浏览此图片


点此下载此工具


File: C:\decode.exe
Size: 15266 bytes
Modified: 星期六 2007年3月3日, 0:57:40
MD5: 7DD40B259B36694D9D20001460CE4F09
SHA1: A27D2A0ACF4C97044B2C39EF544F54EFAEC5339E
CRC32: C84864A1

本文纯属个人意见,如有错漏,还望批评指正!
如若转载,请注明来源,保留版权,谢谢!
COMMENT[12]
樱花浪子
2008/12/24 20:54
来个DELPHI版
var   i:integer;
s:string;
  begin
      s:=Edit1.Text;
      if   s<>''   then
          begin
              for   i:=1   to   Length(s)   do
                  s[i]:=chr(ord(s[i])+i);
              Edit2.Text:=s;
          end;
enjack Homepage
2008/09/25 16:56
哎。。。之前学c的时候也做过解密的编程。。。
:)
sdfsd Homepage
2008/07/09 11:02
思路很好!
…………
o0↓謎誷↑0o
2008/06/29 06:30
换了模板,漂亮了哟。
不习惯使用CMD介面,郁闷,还是比较喜欢用户介面
用C写GUI会比较痛苦……
ssss
2008/06/29 01:56
马甲,我喜欢。
me too
ssss
2008/06/28 04:11
呵呵
嘿嘿……
ssss
2008/06/28 04:10
TO:redspider
用指针性能要好点,在专业水准的C++程序中你能常见
汗,这个马甲挺好的呀
66
2008/06/28 00:56
兄弟 有更好的方法
我没说我的方法是最好的呀……
ninty
2008/06/23 19:45
JAVA:
import java.util.Scanner;
public class Test
{
  public static void main(String[] args) throws Exception
  {
    Scanner sc = new Scanner(System.in);
    System.out.println("输入:");
    String str = sc.nextLine();
    char[] arr = str.toCharArray();

    StringBuilder bsHackest = new StringBuilder();
    for (int i = 0;i<arr.length;i++)
    {
      bsHackest.append((char)(arr[i] - (i+1)));
    }

    System.out.println("原文:"+bsHackest);
  }
}
您是程序员,偶不是……
偶不能跟您比呀……
28度的冰 Homepage
2008/06/22 19:20
#include<stdio.h>
#include<string.h>

int main()
{
  char s[256]={'\n'};
  unsigned int i;
  puts("input:");
  gets(s);
  for(i=0;i<strlen(s);i++)
  {
    printf("%c",s[i]-i-1);
  }
  return 0;
}
这么不人性化,我汗
你看我,printf了多少人性化的文字,NND
分页: 1/2 第一页 1 2 下页 最后页
发表评论
昵称 [注册]
网址
打开HTML 打开UBB 打开表情 隐藏 记住我