资源简介
RC4很简单、很快速,再上一个C语言版本的RC4
代码片段和文件信息
#include
/* Prototype the encryption/decryption function */
char *EnDeCrypt(const char *pszText int iTextLen const char *pszKey);
void swapints(int *array int ndx1 int ndx2);
/* Test harness for the EnDeCrypt function below. */
int main()
{
char buf[256] passwd[16] *pEncrypted *pDecrypted *pch;
int ix iLen;
for (;;)
{
printf(“\nString to encrypt (just Enter to exit): “);
fgets(buf sizeof(buf) stdin);
for (ix = strlen(buf) - 1; (ix >= 0) && (buf[ix] == 10); ix--)
buf[ix] = 0;
if (!buf[0])
break;
printf(“\nKey: “);
fgets(passwd sizeof(passwd) stdin);
for (ix = strlen(passwd) - 1; (ix >= 0) && (passwd[ix] == 10); ix--)
passwd[ix] = 0;
if (!passwd[0])
break;
iLen = strlen(buf);
pEncrypted = EnDeCrypt(buf iLen passwd);
printf(“\nEncrypted output:\n“);
for (pch = pEncrypted ix=0; ix < iLen; pch++ ix++)
{
if (!(ix % 20))
printf(“\n“);
printf(“%1X “ (unsigned char)*pch);
}
pDecrypted = EnDeCrypt(pEncrypted iLen passwd);
pDecrypted[iLen] = 0; /* Null-terminate */
printf(“\nDecrypted text: %s“ pDecrypted);
free(pEncrypted);
free(pDecrypted);
}
return 0;
}
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;::: :::
;::: This function performs ‘RC4‘ Stream Encryption :::
;::: (based on what is widely thought to be RSA‘s RC4 :::
;::: algorithm. It produces output streams that are identical :::
;::: to the commercial products) :::
;::: :::
;::: Adapted by permission from a VB script by Mike Shaffer :::
;::: http://www.4guysfromrolla.com/webtech/010100-1.shtml :::
;::: :::
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
char *EnDeCrypt(const char *pszText int iTextLen const char *pszKey)
/* ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;::: This routine does all the work. Call it both to ENcrypt :::
;::: and to DEcrypt your data. :::
;::: You MUST free the returned pointer when no longer needed :::
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
{
char *cipher; /* Output buffer */
int a b i=0 j=0 k; /* Ambiguously named counters */
int ilen; /* Length of a string */
int sbox[256]; /* Encryption array */
int key[256]; /* Numeric key values */
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3690 2008-02-01 10:28 c_rc4\rc4.c
目录 0 2008-09-09 18:17 c_rc4
----------- --------- ---------- ----- ----
3690 2
- 上一篇:electric-fence 源码
- 下一篇:C语言实现Cat程序
评论
共有 条评论