一个简单的汇编代码转C语言代码,高手帮帮忙

首先看这个帖子

http://bbs.pediy.com/showthread.php?t=157538

楼主已经给出了代码片段,但我还是不懂如何应用。求高手利用帖子里的线索和提示,帮我写一个完整的C语言函数(有主函数的、能直接运行起来的那种),要求功能是输入转换之前的密码(肯定是合法的输入),程序可以输出转换之后的密码。用printf输出或者return都可以。。
帖子截图。没有权限的可以看这里。点击放大。

帖子里面楼主给出的代码是加密代码
下面的大牛给出的思路是解密思路

我用c语言给你实现了

这里用循环你应该明白,因为所有的加密和解密过程都是对每一个字符(字节)进行加密的,而每一个字节又是8位,具体的那个帖子里面的最佳答案写得很清楚。


#include <stdio.h>
#include <string.h>

//pwd 为你输入的密码。
//en 为加密之后的密码(一般来说是乱码) de为解密之后的密码 
 
char pwd[ 256 ], en[ 256 ], de[ 256 ];
int len;

void encrypt( int len ){
    int i = 0;
    for( i = 0 ; i < len; ++i )
    {
        en[i]=((((((((pwd[i]>>2)&0X20)|(pwd[i]&0X40))>>2)|(pwd[i]&0X20))>>1)|(pwd[i]&0X2))>>1)|(((pwd[i]&0X1C)|(pwd[i]<<5))<<2);     
    } 
}

void decrypt( int len )
{
    int i = 0;
    char q;
    for( i = 0 ; i < len; ++i )
    {
        q = ( en[i] & 0X70 ) >> 2;
        q = q | ( ( en[i] & 0X08 ) << 2 );
        q = q | ( ( en[i] & 0X04 ) << 4 );
        q = q | ( ( en[i] & 0X02 ) << 6 );
        q = q | ( ( en[i] & 0X01 ) << 1 );
        q = q | ( ( en[i] & 0X80 ) >> 7 );
        de[i] = q;
    } 


int main()
{
    printf( "please input password: ");
    scanf( "%s", pwd );
    len = strlen( pwd );
    encrypt( len );    //调用加密函数 
    
    printf( "encrypted password: %s\n", en );    //输出 加密之后的密码 
    
    decrypt( len ); //调用解密函数 
    printf( "decrypted password: %s\n", de );    //输出 解密之后的密码 
    return 0;    



//2015年10月1日




温馨提示:答案为网友推荐,仅供参考
相似回答