- 论坛徽章:
- 0
|
请教unix crypt函数与jce的对应
对不起,附件不允许发,程序如下:
#include <stdio.h>;
#include <crypt.h>;
int UnixCrypt(char *vs_plaintext, char *vs_crytext, int ch_salt);
int IsPassOK(char *vs_plainpass, char *vs_crypass);
void main(int argc,char **argv){
if (argc!=2) exit(0);
char* vs_plaintext = argv[2];
char* vs_crytext;
int iRet = rand()%74 + 48;
UnixCrypt(vs_plaintext,vs_crytext,iRet);
printf("salt=%i, plaintext=%s, crypttext=%s\n",iRet,vs_plaintext,vs_crytext);
}
int UnixCrypt(char *vs_plaintext, char *vs_crytext, int ch_salt) {
char salt[3];
char *p;
memset(salt, 0, sizeof(salt));
salt[0]=ch_salt;
salt[1]=*vs_plaintext;
strcpy(vs_crytext, (char *)crypt((const char *)vs_plaintext, (const char *)salt));
return 0;
}
int IsPassOK(char *vs_plainpass, char *vs_crypass) {
char salt[3];
if((strlen(vs_crypass)<13)||(strlen(vs_plainpass)<1))
return -1;
memset(salt, 0, sizeof(salt));
strncpy(salt, vs_crypass, 2);
return strcmp(vs_crypass, (char *)crypt(vs_plainpass, salt));
} |
|