帖子里面楼主给出的代码是加密代码
下面的大牛给出的思路是解密思路
我用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日