GOLANG 加密,解密,GUID 小方法

golang的 MD5加密.BASE64解密  guid 的代码:

/**
 * 用于加密,解密,(包含MD5加密和base64加密/解密)以及GUID的生成
 * 时间:
 * zhifieya
 */

package safe

import (
    "crypto/md5"
    "crypto/rand"
    "crypto/sha1"
    "encoding/base64"
    "encoding/hex"
    "io"
    "strings"
)

const (
    //BASE64字符表,不要有重复
    base64Table        = "<>:;‘,./[email protected]#$CDVWX%^&*ABYZabcghijklmnopqrstuvwxyz01EFGHIJKLMNOPQRSTU2345678(def)_+|{}[]9/"
    hashFunctionHeader = "zh.ife.iya"
    hashFunctionFooter = "09.O25.O20.78"
)

/**
 * 对一个字符串进行MD5加密,不可解密
 */
func GetMd5String(s string) string {
    h := md5.New()
    h.Write([]byte(s)) //使用zhifeiya名字做散列值,设定后不要变
    return hex.EncodeToString(h.Sum(nil))
}

/*获取 SHA1 字符串*/
func GetSHA1String(s string) string {
    t := sha1.New()
    t.Write([]byte(s))
    return hex.EncodeToString(t.Sum(nil))
}

/**
 * 获取一个Guid值
 */
func GetGuid() string {
    b := make([]byte, 48)
    if _, err := io.ReadFull(rand.Reader, b); err != nil {
        return ""
    }
    return GetMd5String(base64.URLEncoding.EncodeToString(b))
}

var coder = base64.NewEncoding(base64Table)

/**
 * base64加密
 */
func Base64Encode(str string) string {
    var src []byte = []byte(hashFunctionHeader + str + hashFunctionFooter)
    return string([]byte(coder.EncodeToString(src)))
}

/**
 * base64解密
 */
func Base64Decode(str string) (string, error) {
    var src []byte = []byte(str)
    by, err := coder.DecodeString(string(src))
    return strings.Replace(strings.Replace(string(by), hashFunctionHeader, "", -1), hashFunctionFooter, "", -1), err
}
时间: 2024-11-02 14:54:23

GOLANG 加密,解密,GUID 小方法的相关文章

JavaScript加密解密7种方法总结分析

原文地址:http://wenku.baidu.com/view/9048edee9e31433239689357.html 本文一共介绍了七种javascript加密方法: 在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的javascript代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的......^*^ 但我们也应该清楚地认识到因为javascript代码是在IE中解释执行,要想绝对的保密是不可能的,我们要做的就是尽可能

通用方法总结(获得两个日期之间的工作天数(周一到周五),加密解密,一个方法执行花费的时间(代码优化时可以使用))

日期计算: 1 /// <summary> 2 /// 获得两个日期之间的工作天数(周一到周五) 3 /// </summary> 4 /// <param name="startTime">起始日期</param> 5 /// <param name="endTime">结束日期</param> 6 /// <returns>返回工作天数</returns> 7 pub

DES加密 java与.net可以相互加密解密两种方法

方法一:通过.NET的key和VI来生成对应于java的key java: import java.security.Key; import java.security.spec.AlgorithmParameterSpec; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParame

php AES cbc模式 pkcs7 128位加密解密(微信小程序)

PHP AES CBC模式PKCS7 128位加密 加密: $key = '1234567812345678'; $iv = '1234567890123456'; $message = '123456'; $blocksize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $len = strlen($message); //取得字符串长度 $pad = $blocksize - ($len % $blocksiz

步步为营-17-FileStream-文件加密/解密

以前使用的File是操作小的文本文件,用的并不常见,FileStream(操作字节),可以操作所有格式的文件,用途较广泛 下面做一个通过文件流给文件加密解密的小软件. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System

php 加密解密字符串

/********************************************************************* 函数名称:encrypt 函数作用:加密解密字符串 使用方法: 加密 :encrypt('str','E','nowamagic'); 解密 :encrypt('被加密过的字符串','D','nowamagic'); 参数说明: $string :需要加密解密的字符串 $operation:判断是加密还是解密:E:加密 D:解密 $key :加密的钥匙(密

PHP的加密解密字符串函数

/********************************************************************* 函数名称:encrypt 函数作用:加密解密字符串 使用方法: 加密 :encrypt('str','E','nowamagic'); 解密 :encrypt('被加密过的字符串','D','nowamagic'); 参数说明: $string :需要加密解密的字符串 $operation:判断是加密还是解密:E:加密 D:解密 $key :加密的钥匙(密

PHP对字符串加密解密的函数

加密解密在一个系统中的应用是非常常见的需求,PHP做的网站中,也会经常用到一些加密解密的时候.下面介绍一个比较好用的加密解密函数,收藏下,以后会用得到. <?php  $id = 132; $token = encrypt($id, 'E', 'nowamagic'); echo '加密:'.encrypt($id, 'E', 'nowamagic'); echo '<br />'; echo '解密:'.encrypt($token, 'D', 'nowamagic'); /*****

C# 加密(Encrypt) 解密(Decrypt) 操作类 java与 C# 可以相互加密解密

public sealed class EncryptUtils { #region Base64加密解密 /// <summary> /// Base64加密 /// </summary> /// <param name="input">需要加密的字符串</param> /// <returns></returns> public static string Base64Encrypt(string input)