谁有C语言的加解密库!!
RT,能不能发份给我,谢谢!!!fangchao918628@163.com
[解决办法]
windows vista以后的版本就有相应的api加密函数
Windows Cryptography API: Next Generation
[解决办法]
我有一个,RC4加密算法,是用C#写的,改改就可以了(流加密算法)
using System;using System.Collections.Generic;using System.Text;/**************************************** * 包名称:Encrypt * 作用:加解密类,采用RC4算法加解密流 * 作者:沈毅(yshen) * 时间:2008/8/23 * *************************************/namespace net.yshen.NetKit.Common{ /// <summary> /// 保存密钥序列化出来的值 /// </summary> class rc4_key { /// <summary> /// 序列化值 /// </summary> public byte[] state = new byte[256]; /// <summary> /// 当前的X /// </summary> public byte x; /// <summary> /// 当前的Y /// </summary> public byte y; } /// <summary> /// 加密解密类 /// </summary> public class Rc4Crypt { /// <summary> /// 序列化值 /// </summary> private rc4_key key = new rc4_key(); /// <summary> /// 构造函数 /// </summary> /// <param name="keyData">密钥</param> /// <param name="keyLen">密钥字节长度</param> public Rc4Crypt(byte[] keyData, int keyLen) { //根据传过来的密钥,构造序列化数值 prepare_key(keyData, keyLen); } /// <summary> /// 交换X,Y值 /// </summary> /// <param name="x">X</param> /// <param name="y">Y</param> private void swap_byte(ref byte x, ref byte y) { byte temp = x; x = y; y = temp; } /// <summary> /// 根据密钥,产生序列化值 /// </summary> /// <param name="key_data_ptr">密钥</param> /// <param name="key_data_len">密钥字节长度</param> private void prepare_key(byte[] key_data_ptr, int key_data_len) { byte index1; byte index2; short counter; for (counter = 0; counter < 256; counter++) { key.state[counter] = (byte)counter; } key.x = 0; key.y = 0; index1 = 0; index2 = 0; for (counter = 0; counter < 256; counter++) { index2 =(byte)((key_data_ptr[index1] + key.state[counter] + index2) % 256); swap_byte(ref key.state[counter], ref key.state[index2]); index1 = (byte)((index1 + 1) % key_data_len); } } /// <summary> /// 加密或者解密 /// </summary> /// <param name="buffer_ptr">数据内容</param> /// <param name="buffer_ptr">数据开始下标</param> /// <param name="buffer_len">数据长度</param> /// <returns>true or false</returns> public void rc4(ref byte[] buffer_ptr,int index, int buffer_len) { byte x; byte y; byte xorIndex; uint counter; x = key.x; y = key.y; for (counter = 0; counter < buffer_len; counter++) { x = (byte)((x + 1) % 256); y = (byte)((key.state[x] + y) % 256); swap_byte(ref key.state[x], ref key.state[y]); xorIndex = (byte)((key.state[x] + key.state[y]) % 256); buffer_ptr[counter+index] ^= key.state[xorIndex]; } key.x = x; key.y = y; } }}