vc字符串加密
① 如何将VC 程序加密防盗
学名密钥盘,是当下软件保护的最好办法,有专门的外包供应商,在中国比较专业的例如飞天诚信,其盘能乎胡袭存储私钥,私钥不可导出。一般内部有硬件实现的哈希算法很公钥算法,能签名,校验岁兄,非常安全。在软件运行时不做氏停监测密钥盘的存在,并校验口令。
换句话说,是软件就能破解,包括这种方式,就看破解成本的大小。可以修改程序完全绕过密钥盘。
软件保护的终极形态是把算法固化为硬件,灌参数运行。
另外在线激活是个不错的身份授权方式
② C++ string字符串如何加密
C++ string类重载了[]运算符,因此,可以象数组一样方便的引用string中的每一个元素,进行数据修改。如,字符串简单加密方法,A-B, B-C, C-D。。。Z-A的实现代码如下:
#include<iostream>
#include<string>
usingnamespacestd;
intmain()
{
strings;
cin>>s;//输入字符串
for(inti=0;i<s.length();i++)//遍历字符串s.length()为输入串的长度
{
if(s[i]>='A'&&s[i]<'Z')//处理A-Y
s[i]+=1;
elseif(s[i]=='Z')//处理Z
s[i]='A';
//非大写字符,不处理
}
cout<<s<<endl;//输出字符串
return0;
}
运行结果:
AsDfGXyZ
BsEfHYyA
③ C语言设计一个用简单的加密程序,即用字母替换的方式加密,程序运行中发现问题,求解释。
原因就是char是1个字节的,你不能超过127(hi,楼上的,不是128哦,是-128~127不要误人子弟),你到后面的vwxyz已经溢出,所以是乱码。
我的解决方法就很简单,就是换成unsigned char 数组,这样取值范围增大到(0~255)就可以了,既简单又不破坏原有的结构
还有
else if(str[i]<'a')
{
str[i]+=26;
}
这句话是废话,可以删掉
我修改过的版本
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void EncodeString(unsigned char *str,int key)
{
int length,i;//length为传入字符串长度,i用作循环计数器
length=strlen(str);
for(i=0;i<length;i++)//对字符串中的每个字符依次进行加密
{
if(isupper(str[i]))//对大写字母加密
{
str[i]+=key%26;
if(str[i]>'Z')
{
str[i]-=26;
}
}
else if(islower(str[i]))//对小写字母加密
{
str[i]+=key%26;
if(str[i]>'z')
{
str[i]-=26;
}
}
}
}
void main()
{
unsigned char arr[50],buffer;//arr[50]用来接收字符串信息,buffer用来接收缓冲区中的回车
int key;//key为加密秘钥
printf("This program encodes messages using a cyclic cipher.\n");
printf("To stop, enter 0 as the key.\n");
while(1)//程序一直运行,直到输入密钥0为止
{
printf("Enter the key: ");
scanf("%d",&key);
scanf("%c",&buffer);
if(0==key)
{
break;//输入密钥为0,则退出程序
}
printf("Enter a message: ");
scanf("%s",arr);
scanf("%c",&buffer);
EncodeString(arr,key);
printf("Encoded message: %s\n",arr);
}
}
④ VC 简单加密!
#include <stdio.h>
#include <string.h>void main()
{
char a[50] = "加密~!中英文都要支持!越简单越好!";//原文
char b[50];
char key[5] = "abcd\0";//密钥
int i, j; printf("原文:%s\n\n", a);
printf("密钥:%s\n\n", key); for (i = 0; i < strlen(a); i ++)
{
for (j = 0; j < 4; j ++)
{
b[i] = a[i] ^ key[j];//将每一个原文字符跟密钥字符异或
}
}
b[i] = 0;//结束字符串
printf("加密后:%s\n\n", b); for (i = 0; i < strlen(a); i ++)
{
for (j = 3; j >= 0; j --)
{
b[i] = b[i] ^ key[j];
}
}
printf("解密后:%s\n\n", a);
}
⑤ 谁有VC中用MD5对字符串进行加密的源码
1 public String md5(String s)
2 {
3 System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
4 byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);
5 bytes = md5.ComputeHash(bytes);
6 md5.Clear();
7
8 string ret = "";
9 for(int i=0 ; i<bytes.Length ; i++)
10 {
11 ret += Convert.ToString(bytes[i],16).PadLeft(2,'0');
12 }
13
14 return ret.PadLeft(32,'0');
15 }
这个函数实现传如string,返回md5的string
⑥ 用C语言编写一个对称加密算法,对字符串加密
/*本问题的关键是如何交换ASCII的二进制位,下面提供简短算法,并附上VC++6.0环境下的运行结果截图。
*/
#include<stdio.h>
charswapbit(charc){
chari,num=0,ch[8];
for(i=0;i<8;i++){
ch[i]=c&1;
c=(c>>1);
}
for(i=0;i<8;i++){
num=2*num+ch[i];
}
returnnum;
}
intmain(){
charch;
for(ch='A';ch<='Z';ch++){
printf("%c=%X:%X ",ch,ch,0XFF&swapbit(ch));
}
return0;
}