VB 加密与解密的程序代码

VB 加密与解密的程序代码,第1张

加密:

Private Function JiaMi(ByVal varPass As String) As String '参数varPass是需要加密的文本内容

Dim varJiaMi As String * 20

Dim varTmp As Double

Dim strJiaMi As String

Dim I

For I = 1 To Len(varPass)

varTmp = AscW(Mid$(varPass, I, 1))

varJiaMi = Str$(((((varTmp * 1.5) / 5.6) * 2.7) * I))

strJiaMi = strJiaMi &varJiaMi

Next I

JiaMi = strJiaMi

End Function

解密函数

Private Function JieMi(ByVal varPass As String) As String '参数varPass是需要解密的密文内容

Dim varReturn As String * 20

Dim varConvert As Double

Dim varFinalPass As String

Dim varKey As Integer

Dim varPasslenth As Long

varPasslenth = Len(varPass)

For I = 1 To varPasslenth / 20

varReturn = Mid(varPass, (I - 1) * 20 + 1, 20)

varConvert = Val(Trim(varReturn))

varConvert = ((((varConvert / 1.5) * 5.6) / 2.7) / I)

varFinalPass = varFinalPass &ChrW(Val(varConvert))

Next I

JieMi = varFinalPass

End Function

扩展资料:

注意事项

编写加密程序,将用户输入的一个英文句子加密为加密字符串,然后输出加密字符串。假设句子长度不超过100个字符。

根据给定的句子加密函数原型SentenceEncoding,编写函数SentenceEncoding调用给定的字符加密函数CharEncoding完成句子加密。

然后,编写主程序提示用户输入英文句子,然后调用函数SentenceEncoding对句子加密,最后输出加密后的句子。

字符加密规则为大写字母和小写字母均加密为其补码, 我们定义ASCII码值相加为’A’+’Z’即155的两个大写字母互为补码,ASCII码值相加为’a’+’z’即219的两个小写字母互为补码。

空格用@代替,句号以#代替,其它字符用句点代替。

函数原型:

void SentenceEncoding(char *soure,char *code)

功能:对待加密字符串source加密后保存加密字符串到code.

参数:char *soure,指向待加密句子的字符串指针;

char *code 指向加密字符串的字符串指针;

字符加密函数代码。

问题不小,你表面用的是C

但是,好多地方不符合C的语法

,,比如:

for

(int

i=0

str[i]

!=

'\0'

i++)

还有,就是你好像没有弄清楚

,你要做什么似的,有好多无用的东西,

就像你的函数里的,key

,虽然你提到key了,但是你根本没有使用key,你只是使用45来进行加密,,还有就是一个文件

的大小,是不确定的,你用一个100个字符的字符串来存,有点那个不安全了,,如果稍长一点就会出问题,产生运行时错误。其实你这个加密和解密是一个可逆过程,用一个函数,就可以了,具体你想要的也不是太明白,就给你弄了一个简单一点加密和解密程序

,输入输出不是同一个文件

,不知道是不是你想要的。

#include

#include

#include

void

Decrypt()

{

char

fname[FILENAME_MAX]

char

fname2[FILENAME_MAX]

FILE*

fp

FILE*

fp1

int

key

char

c

printf("输入要加/解密文件的路径:\n")

scanf("%s",

fname)

printf("请输入密钥:\n")

scanf("%d",&key)

strcpy(fname2,fname)

strcat(fname2,".txt")

if(

(fp

=

fopen(fname,"r+"))

==

NULL)

{

printf("error")

exit(1)

}

if(

(fp1

=

fopen(fname2,"w+"))

==

NULL)

{

printf("error")

exit(1)

}

while(

(c

=

fgetc(fp))

!=

EOF)

{

c

=

c^key

fputc(c,fp1)

}

fcloseall()

}

int

main()

{

Decrypt()

return

0

}

如果想看一些好一点的加密算法

,我这里有一些,联系我发给你

,,

我没注意只要小写,我写的是大小写都可以的,另外附送输入验证。

#include <stdio.h>

#include <string.h>

int main()

{

    char str[]="00000",str2[]="00000",*p=str,*p2=str2

    printf("输入5个字母:")

    while(*p!=0)

    {

        scanf("%c",p)

        if(*p=='\n')

            continue

        if(*p<'A'||(*p>'Z'&&*p<'a') || *p>'z') //输入验证,必须是字母

        {

            printf("只能输入字母,请重新输入\n")

            p=str

            p2=str2

            fflush(stdin)//输入有错重新输入前清空缓冲区。fflush属于c扩展函数,正常使用没问题,如需在linux ggc上使用,考虑多次调用getchar函数来清空

        }

        else

        {

            *p2=(*p)+4

            if(*p2>90 && *p2<97)   //大写字母加4,最大位不超出

                *p2='A'+(*p2-90)-1

            if(*p2>122)            //小写字母加4,最大位不超出

                *p2='a'+(*p2-122)-1

            p2++

            p++

        }

    }

    printf("原字符串为:%s\n加密后的字符串为:%s\n",str,str2)

    return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11405895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存