Public Class Form1
    Dim charAarray() As Char

    '加密
    Private Sub Btn_En_Click(sender As System.Object, e As System.EventArgs) Handles Btn_En.Click
        Dim s As String
        Dim result As Boolean
        result = EncryptOrDecrypt(Txt_PlainText_1.Text, Txt_Secrect_Key.Text, 1, s)
        Txt_Text_1.Text = s

        MessageBox.Show(IIf(result, "Success", "Failure"))
    End Sub

    '解密
    Private Sub Btn_De_Click(sender As System.Object, e As System.EventArgs) Handles Btn_De.Click
        Dim s As String
        Dim result As Boolean
        result = EncryptOrDecrypt(Txt_Text_2.Text, Txt_Secrect_Key.Text, -1, s)
        Txt_PlainText_2.Text = s

        MessageBox.Show(IIf(result, "Success", "Failure"))
    End Sub

    '加解密字符串
    'str为待加密的字符串
    'secretKey为秘钥
    'f为加解密标示,f=1标示加密,f=-1标示解密
    'outputStr为加解密之后的字符串
    '返回操作结果
    Function EncryptOrDecrypt(ByVal str As String, ByVal secretKey As Integer, ByVal f As Integer, ByRef outputStr As String) As Boolean
        outputStr = ""

        If (String.IsNullOrWhiteSpace(str)) Then
            Return False
        End If

        Dim c As Char
        For i As Integer = 0 To str.Length - 1
            c = str(i)
            c = EncryptChar(c, secretKey, f)
            outputStr &= c
        Next i

        Return True
    End Function

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        charAarray = CreateCharArray()
        MessageBox.Show("OK")
    End Sub

    Function CreateCharArray() As System.Array
        Dim s As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
        Dim rnd As New Random
        Dim cArray(s.Length - 1) As Char
        Dim index As Integer
        Dim i As Integer

        i = 0
        Do
            index = rnd.Next(s.Length)
            If Not cArray.Contains(s(index)) Then
                cArray(i) = s(index)
                i += 1
            End If
        Loop While (i < s.Length)

        Return cArray
    End Function

    '加密单个字符
    'c为要加密的字符
    'secretKey为秘钥
    'f为加解密标示,f=1标示加密,f=-1标示解密
    '返回加密之后的字符
    Function EncryptChar(ByVal c As Char, ByVal secretKey As Integer, ByVal f As Integer) As Char
        Dim cIndex As Integer
        Dim len As Integer
        len = charAarray.Length

        cIndex = Array.IndexOf(charAarray, c)
        If f = 1 Then
            cIndex += secretKey
        Else
            cIndex -= secretKey
        End If

        If (cIndex >= len) Then
            Math.DivRem(cIndex, len, cIndex)
        End If

        If (cIndex < 0) Then
            Do
                cIndex += len
            Loop While (cIndex < 0)
        End If

        Return charAarray(cIndex)
    End Function
End Class

简单加解密算法 - vb.net的更多相关文章

  1. DES加解密算法Qt实现

      算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为b ...

  2. AES加解密算法Qt实现

    [声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外 ...

  3. C#加解密算法

    先附上源码 加密解密算法目前已经应用到我们生活中的各个方面 加密用于达到以下目的: 保密性:帮助保护用户的标识或数据不被读取. 数据完整性:帮助保护数据不被更改. 身份验证:确保数据发自特定的一方. ...

  4. 3des加解密算法

    编号:1003时间:2016年4月1日09:51:11功能:openssl_3des加解密算法http://blog.csdn.net/alonesword/article/details/17385 ...

  5. QQ协议的TEA加解密算法

    QQ通讯协议里的加解密算法. #include <stdio.h> #include <stdlib.h> #include <memory.h> #include ...

  6. AES加解密算法在Android中的应用及Android4.2以上版本调用问题

     from://http://blog.csdn.net/xinzheng_wang/article/details/9159969 AES加解密算法在Android中的应用及Android4.2以上 ...

  7. [转]RSA,DSA等加解密算法介绍

    From : http://blog.sina.com.cn/s/blog_a9303fd90101cgw4.html 1)      MD5/SHA MessageDigest是一个数据的数字指纹. ...

  8. JavaScript与C#互通的DES加解密算法

    原文地址:传送门 本文提供了一个能使JavaScript与C#互通的DES加解密算法的实现,在前台页面中用JavaScript版本的DES算法将数据加密之后,传到服务器端,在服务器端可用C#版本的DE ...

  9. C# 中使用 RSA加解密算法

    一.什么是RSA RSA公开密钥密码体制.所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制. 在公开密钥密码体制中,加密密钥(即 ...

随机推荐

  1. Mysql 技巧

    order by条件: SELECT * FROM tablename WHERE id_one=27 OR id_two=27 ORDER BY CASE WHEN id_one=27 THEN t ...

  2. 用c++写一个 “hello,world” 的 FastCGI程序

    原文:http://chriswu.me/blog/writing-hello-world-in-fcgi-with-c-plus-plus/ 上面的连接地址给出的是作者的原文地址. 另外一个作者稍微 ...

  3. jquery.elevateZoom实现仿淘宝看图片,一张小的,一张大用于鼠标经过时候显示

    实现这个效果你需要准备两张图片,一张小的,一张大用于鼠标经过时候显示.然后我们只要为img标签添加data-zoom-image属性,其值为大图的地址,最后在javascript中选择该图片调用ele ...

  4. Nginx Image Module图片缩略图 水印处理模块

    Nginx Image Module图片缩略图 水印处理模块 下载Tengine tar -zxvf tengine-1.4.5.tar.gz cd tengine-1.4.5 下载Nginx tar ...

  5. iOS 的三种自建证书方法https请求相关配置

    如果你的app服务端安装的是SLL颁发的CA,可以使用系统方法直接实现信任SSL证书,关于Apple对SSL证书的要求请参考:苹果官方文档CertKeyTrustProgGuide 这种方式不需要在B ...

  6. 25个Linux性能监控工具

    一段时间以来,我们在网上向读者介绍了如何为Linux以及类Linux操作系统配置多种不同的性能监控工具.在这篇文章中我们将罗列一系列使用最频繁的性能监控工具,并对介绍到的每一个工具提供了相应的简介链接 ...

  7. AFNetworking3.0为何弃用了NSURLConnection

    http://blog.csdn.net/qq_34101611/article/details/51698524 上篇博客说到AFNetworking3.0只提供了NSURLSession的支持.其 ...

  8. [转]解决Maven报错"Plugin execution not covered by lifecycle configuration"

    [转]解决Maven报错"Plugin execution not covered by lifecycle configuration" 导入Myabtis源码后,POM文件会报 ...

  9. DP题目列表/弟屁专题

    声明: 1.这份列表不是我原创的,放到这里便于自己浏览和查找题目. ※最近更新:Poj斜率优化题目 1180,2018,3709 列表一:经典题目题号:容易: 1018, 1050, 1083, 10 ...

  10. Java的内存泄漏

    内存泄漏是指,无用对象(不再使用的对象)持续占用内存或者无用对象的内存得不到及时释放,从而造成的内存浪费 就说是有一块内存你不需要再用了,但是呢你还保留着它的指针,那么这块内存就不会被回收 举个例子 ...