doraemon

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 6, 2024 License: MIT Imports: 47 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BcryptHash

func BcryptHash(str string) (string, error)

BcryptHash 对传入字符串进行bcrypt哈希

func BcryptMatch

func BcryptMatch(hash string, str string) bool

BcryptMatch 对传入字符串和哈希字符串进行比对,str为明文

func BytesAsPointer

func BytesAsPointer(b []byte) (unsafe.Pointer, int, int)

func BytesToString

func BytesToString(b []byte) string

BytesToString converts a byte slice to a string without copying. The byte slice must not be modified after the conversion. otherwise, the string may be corrupted.

func CharToInt

func CharToInt(c byte) int

字符转整型

func CloseLibrary

func CloseLibrary(handle uintptr) error

func Cmd

func Cmd(dir string, params []string) (string, error)

Deprecated

等待执行完毕才返回, dir为cmd命令执行的位置,传入空值则为默认路径。 params中的命令会用空格分隔,一次性提交给cmd。

func CmdNoOutput

func CmdNoOutput(dir string, params []string) error

Deprecated

等待执行完毕才返回,不反回输出。 dir为cmd命令执行的位置,传入空值则为默认路径。 params中的命令会用空格分隔,一次性提交给cmd。

func Cmd_NoWait

func Cmd_NoWait(dir string, params []string) (cmd *exec.Cmd, err error)

Deprecated

不等待执行完毕就返回(go程序不能立即退出),如果params中有转义字符需要自己处理, dir为cmd命令执行的位置,传入空值则为默认路径。 params中的命令会用空格分隔,一次性提交给cmd。

func ColorPrint

func ColorPrint(attributes []color.Attribute, strs ...string)

colors描述了后面每个字符串的颜色属性,colors与strs长度必须相同, 注意字符串不要忘了带上空格和换行。

func Compress

func Compress(file []string, zipFile string) error

Compress compresses the file to the zip file.

func CopyDir

func CopyDir(src, dst string, overwrite bool) error

复制文件夹到指定目录

overwrite为true时,如果目标文件夹存在名字相同的文件则覆盖, overwrite为false时,如果目标文件存在则返回错误。 dst,scr都必须是一个存在的文件夹,否则返回错误。

func CopyFile

func CopyFile(src, dst string, overwrite bool) error

复制文件到指定目录

overwrite为true时,如果目标文件存在则覆盖, overwrite为false时,如果目标文件存在则返回错误。 dst必须是一个存在的文件夹,否则返回错误。 scr为文件的绝对或相对路径(包含文件名)。

func CopyFileOrDir

func CopyFileOrDir(src, dst string, overwrite bool) error

复制文件或文件夹

overwrite为true时,如果目标文件存在则覆盖(dst中的目标文件或文件夹会被直接删除), overwrite为false时,如果目标文件存在则返回错误。 scr,dst 为绝对或相对路径,dst必须是一个文件夹(可以不存在)。

func CreateShortcut

func CreateShortcut(filename, dir string) error

给目录或文件创建快捷方式(filename可以为绝对路径也可以为相对路径,dir必须是绝对路径)

func DetermineEncodingbyPeek

func DetermineEncodingbyPeek(r *bufio.Reader, contentType string) (encoding.Encoding, error)

自动检测html编码,不会减少缓冲器的内容, 得到编码器后用transform.NewReader解码为utf-8

func ExecutionFilePath

func ExecutionFilePath() (string, error)

获取当前程序源代码的详细路径 D:/Go/workspace/port/network_learn/server/server.go

func FileIsExist

func FileIsExist(path string) bool

文件是否存在

func FileOrDirIsExist

func FileOrDirIsExist(path string) bool

文件或文件夹是否存在

func GatMd5

func GatMd5(content []byte) ([]byte, error)

计算md5

func GatMd5Hex

func GatMd5Hex(content []byte) (string, error)

func GbkToUtf8

func GbkToUtf8(b []byte) []byte

func GenCertificate

func GenCertificate() (cert tls.Certificate, err error)

func GenerateKeyPair

func GenerateKeyPair() (rawCert, rawKey []byte, err error)

func GenerateRSAKey

func GenerateRSAKey(bits int) (Private []byte, Public []byte, err error)

生成RSA私钥和公钥,pem格式

func GenerateRandomSeed

func GenerateRandomSeed() int64

GenerateRandomSeed 生成随机种子

func GenerateSM2Key

func GenerateSM2Key() (pubKey, priKey []byte, err error)

func GenerateTLSConfig

func GenerateTLSConfig() (*tls.Config, error)

Setup a bare-bones TLS config for the server

例如:添加quic协议支持
config.NextProtos = append(config.NextProtos, "quic")

func GetAllHosts

func GetAllHosts(lanIP string) (map[string]string, error)

获取局域网内所有主机IP与MAC地址(通过ping命令更新arp表,不包含自己), 通过LanIP获取局域网IP段,通过PingAll更新arp表。 返回map[ip]mac。 更好的通用方法https://studygolang.com/articles/1202 https://github.com/mnhkahn/go_code/blob/master/fing.go

func GetAllNamesInPath

func GetAllNamesInPath(path string) ([]string, error)

获取path路径下的文件(含后缀)和文件夹名称

func GetAllNamesRecursive

func GetAllNamesRecursive(path string) ([]string, error)

递归获取path下所有文件和文件夹 path决定返回的文件路径是绝对路径还是相对路径。

func GetCStringLen

func GetCStringLen(str unsafe.Pointer) int

func GetCurrentPath

func GetCurrentPath() (string, error)

获取当前程序的执行环境路径(不包含可执行文件名称)

func GetExecutionPath

func GetExecutionPath() (string, error)

获取当前程序所在的绝对路径+文件名

func GetExecutionPath2

func GetExecutionPath2() (string, error)

获取当前程序的执行路径(包含可执行文件名称) C:\Users\*\AppData\Local\Temp\*\exe\main.exe 或 .\main.exe (读取命令参数的方式)

func GetFileMd5

func GetFileMd5(filename string) ([]byte, error)

获取文件md5

func GetFileNamesRecursive

func GetFileNamesRecursive(path string) ([]string, error)

递归获取path下所有文件(包含子文件夹中的文件)。 path决定返回的文件路径是绝对路径还是相对路径。

func GetFileNmaesInPath

func GetFileNmaesInPath(path string) ([]string, error)

获取path下所有文件名称(含后缀,不含路径)

func GetFileSha1

func GetFileSha1(filename string) (string, error)

获取文件的SHA1值(字母小写)

func GetFolderNamesInPath

func GetFolderNamesInPath(path string) ([]string, error)

获取path路径下的文件夹名称(不含路径)

func GetFolderNamesRecursive

func GetFolderNamesRecursive(path string) ([]string, error)

递归获取path下所有文件夹(包含子文件夹) path决定返回的文件路径是绝对路径还是相对路径。

func GetFormatedTimeFromUnixMilli

func GetFormatedTimeFromUnixMilli(rawTime int64, format string) string

时间戳毫秒 -> format time(Local)。 if rawTime is "" , return current time。

func GetFormatedTimeFromUnixMilliStr

func GetFormatedTimeFromUnixMilliStr(rawTime string, format string) (string, error)

时间戳毫秒 -> format time(Local)。 if rawTime is "" , return current time。

func GetGateway

func GetGateway() (string, error)

获取网关地址 还可以通过构建ICMP报文实现路由追踪(traceroute),记录访问某个网站经过的路径,那么第一条路径就是访问路由器

func GetGatewayOutsideIP

func GetGatewayOutsideIP() (string, error)

获取路由器的外部IP,需要路由器支持UPNP协议。

func GetIPv4ByInterfaceName

func GetIPv4ByInterfaceName(name string) (net.IP, error)

获取指定网卡的ipv4地址,如WLAN

func GetIPv6ByInterfaceName

func GetIPv6ByInterfaceName(name string) (string, error)

获取指定网卡的ipv6地址,如WLAN

func GetIpv4MaskByInterfaceName

func GetIpv4MaskByInterfaceName(name string) (net.IPMask, error)

获取指定网卡的ipv4子网掩码

func GetIpv6MaskByInterfaceName

func GetIpv6MaskByInterfaceName(name string) (net.IPMask, error)

获取指定网卡的ipv6子网掩码

func GetLocalIP

func GetLocalIP() (string, error)

func GetMyWLANMAC

func GetMyWLANMAC() (string, error)

获取本机真实的无线局域网的mac地址

func GetPublicIPV4

func GetPublicIPV4() (string, error)

func GetPublicIPV6

func GetPublicIPV6() (string, error)

func GetRandomUserAgent

func GetRandomUserAgent() string

随机获取user-agent(不含移动端)

func GetSavedWifi

func GetSavedWifi() (string, error)

获取本机已保存的所有wifi

func GetSha1

func GetSha1(data []byte) ([]byte, error)

GetSha1 获取[]byte的SHA1值(字母小写)

func GetSha256

func GetSha256(content []byte) ([]byte, error)

计算sha256

func GetWLANDefaultGateway

func GetWLANDefaultGateway() (string, error)

通过ipconfig命令获取WLAN的默认网关

func GetWifiName

func GetWifiName() (string, error)

获取当前wifi名称

func GetWifiPassword

func GetWifiPassword(wifiname string) (string, error)

获取当前网络密码

func GetYesterday

func GetYesterday() time.Time

获取昨天的日期

func Get_client

func Get_client() (http.Client, error)

初始化client

func HexMaskToColonMask

func HexMaskToColonMask(hexMask string) string

转换十六进制的子网掩码为冒号分隔的十六进制(请确保传入的是十六进制的子网掩码)

func HexMaskToDotMask

func HexMaskToDotMask(hexMask string) string

转换十六进制的子网掩码为点分十进制(请确保传入的是十六进制的子网掩码)

func HexToInt

func HexToInt(hex string) (int, error)

十六进制转换为十进制

func IsAdmin

func IsAdmin() bool

判断当前进程是否以管理员身份运行

func IsChildDir

func IsChildDir(parent, child string) bool

判断child是否是parent的子文件夹(不存在的文件夹会返回false)

func IsChildDir2

func IsChildDir2(parent, child string) bool

判断child是否是parent的子文件夹(为了性能只是简单的判断前缀,需要保证路径分隔符一致)

func IsDir

func IsDir(path string) (is bool, exist bool, err error)

是否为文件夹

func IsFile

func IsFile(path string) (is bool, exist bool, err error)

是否为文件

func LoadX509KeyPairTLSConfig

func LoadX509KeyPairTLSConfig(certFile, keyFile string) (*tls.Config, error)

func MoveFileOrDir

func MoveFileOrDir(src, dst string, overwrite bool) error

移动文件或文件夹到指定目录

overwrite为true时,如果目标文件存在则覆盖(dst中的目标文件或文件夹会被直接删除), overwrite为false时,如果目标文件存在则返回错误。 dst必须是一个存在的文件夹,否则返回错误。 scr为的绝对或相对路径。

func NetWorkStatus

func NetWorkStatus() bool

func OpenLibrary

func OpenLibrary(name string) (uintptr, error)

func OpenUrl

func OpenUrl(uri string) error

func PKCS7Padding

func PKCS7Padding(plainText []byte, blockSize int) []byte

PKCS7是兼容PKCS5的,PKCS5相当于PKCS7的一个子集。

func PKCS7UnPadding

func PKCS7UnPadding(plainText []byte, blockSize int) ([]byte, error)

func PingAll

func PingAll(srcIP string) error

ping局域网内所有ip

func PingToUpdateARP

func PingToUpdateARP(ip string)

func PressEnterKeyToContinue

func PressEnterKeyToContinue()

func PressEnterKeyToContinue2

func PressEnterKeyToContinue2(ch chan bool)

func PressEnterKeyToContinueWithTimeout

func PressEnterKeyToContinueWithTimeout(timeout time.Duration)

Press Enter Key to Continue with Timeout,超时则退出程序

func RSA_DecryptOAEP

func RSA_DecryptOAEP(cipherText []byte, privateKey []byte, label []byte) ([]byte, error)

RSA解密,填充模式OAEP,private为私钥的pem格式

func RSA_DecryptPKCS1v15

func RSA_DecryptPKCS1v15(cipherText []byte, privateKey []byte) ([]byte, error)

RSA解密,填充模式PKCS1v15,private为私钥的pem格式

func RSA_EncryptOAEP

func RSA_EncryptOAEP(plainText []byte, publicKey []byte, label []byte) ([]byte, error)

RSA加密,填充方式为OAEP,publicKey为公钥的pem格式。 对结果进行base64编码可以提高可读性。

The random parameter is used as a source of entropy to ensure that encrypting the same message twice doesn't result in the same ciphertext.

The label parameter may contain arbitrary data that will not be encrypted, but which gives important context to the message. For example, if a given public key is used to encrypt two types of messages then distinct label values could be used to ensure that a ciphertext for one purpose cannot be used for another by an attacker. If not required it can be empty.

func RSA_EncryptPKCS1v15

func RSA_EncryptPKCS1v15(plainText []byte, publicKey []byte) ([]byte, error)

RSA加密,填充方式为PKCS1v15,publicKey为公钥的pem格式。 对结果进行base64编码可以提高可读性。

The message must be no longer than the length of the public modulus minus 11 bytes.

WARNING: use of this function to encrypt plaintexts other than session keys is dangerous. Use RSA OAEP in new protocols.

在RSA攻击中,存在着“小明文攻击“的方式;
在明文够小时,密文也够小,直接开e次方即可;
在明文有点小时,如果e也较小,可用pow(m,e)=n*k+c穷举k尝试爆破,所以,比如说,在选择明文攻击中,单纯的RSA非常容易被破解。
于是,我们就像将密文进行一下填充,最好让密文都等长。
但是填充方式也是很讲究的;不好的填充规则往往仅仅有限的增加了攻击的难度,或者难以实现等长密文。
于是我们就查到了OAEP——最优非对称加密填充。

func RandNByte

func RandNByte(n int) []byte

RandNByte returns a slice of n random bytes.

func ReadLines

func ReadLines(reader io.Reader) (lines [][]byte, err error)

func ReadStartWithLastLine

func ReadStartWithLastLine(filename string, n int) (string, error)

读取倒数第n行(n从1开始), 若n大于文件行数则返回错误io.EOF。

func ReadTrimmedLines

func ReadTrimmedLines(reader io.Reader) (lines [][]byte, err error)

ReadTrimmedLines 从给定的 io.Reader 中读取内容,并按行分割成字节切片。 开头和结尾的空白行将被去除。 返回值 lines 是一个二维字节切片,每个元素代表一行的内容。 返回值 err 表示读取过程中是否发生错误。

func ReverseRead

func ReverseRead(name string, lineNum uint) ([]string, error)

从文件末尾按行读取文件。 name:文件路径 lineNum:读取行数(超过文件行数则读取全文)。 最后一行为空也算读取了一行,会返回此行为空串,若全是空格也会原样返回。 返回的每一行都不包含换行符号。

func RsaSignPKCS1v15

func RsaSignPKCS1v15(src []byte, privateKey []byte) ([]byte, error)

rsa数字签名,private为私钥的pem格式

func RsaVerifyPKCS1v15

func RsaVerifyPKCS1v15(src []byte, sign []byte, publicKey []byte) error

rsa数字验签,publicKey为公钥的pem格式

func SM2DecryptAsn1

func SM2DecryptAsn1(priKey, cipherText []byte) (plainText []byte, err error)

func SM2EncryptAsn1

func SM2EncryptAsn1(pubKey, plainText []byte) (cipherText []byte, err error)

返回asn.1编码格式的密文内容

func ScanFields

func ScanFields(
	lines []string,
	fieldSpaceLimit int,
	recordSpaceLimit int,
	fieldKeyWords map[string]func(string) bool,
) (fields []string, records [][]string, err error)

ScanFields 函数的作用是解析一组文本行(lines),将第一行作为字段名称(fields)提取, 并将剩余的行解析为记录(records),每条记录是字段值的集合。 这个函数可以处理有限数量的空格字符来分隔记录中的字段。 函数的参数: lines: 一个字符串切片,包含要解析的文本行。 recordSpaceLimit: 一个整数,指定字段之间的最小空格数来认为字段是分开的。 如果为0,则使用任意数量的空格来分隔字段。 需要保证第一行是字段名, 且后面每行都是有效的记录。

例如,下面的文本行: Name Access Availability BlockSize

C: 3 0 4096

D: 3 4096

E: 3 1 4096

F: 1 4096

将被解析为: fields = ["Name", "Access", "Availability", "BlockSize"]

records = [

["C:", "3", "0", "4096"],
["D:", "3", "", "4096"],
["E:", "3", "1", "4096"],
["F:", "", "1", "4096"],

]

func SplitBySpaceLimit

func SplitBySpaceLimit(line string, spaceLimit int) []string

func SplitBySpaceLimit2

func SplitBySpaceLimit2(line string, spaceLimit int) []string

func Str2int32

func Str2int32(str string) int32

Str2int32 将字符串转换为int32 使用前请确保传入的字符串是合法的

func Str2int64

func Str2int64(str string) int64

Str2int64 将字符串转换为int64 使用前请确保传入的字符串是合法的

func Str2uint64

func Str2uint64(str string) uint64

Str2uint64 将字符串转换为uint64 使用前请确保传入的字符串是合法的

func StrLen

func StrLen(str string) int

StrLen统计字符串长度

func StringAsPointer

func StringAsPointer(s string) (unsafe.Pointer, int)

func StringToBytes

func StringToBytes(s string) []byte

func TransformCoding

func TransformCoding(rd io.Reader, contentType string) (*transform.Reader, error)

转码utf-8,contentType 可以传空值"" DetermineEncoding determines the encoding of an HTML document by examining up to the first 1024 bytes of content and the declared Content-Type.

func UTF8ToGBK

func UTF8ToGBK(b []byte) []byte

GBK is the GBK encoding. It encodes an extension of the GB2312 character set and is also known as Code Page 936.

func UnCompress

func UnCompress(zipFile, dest string) error

解压

func UnicodeStrToUtf8

func UnicodeStrToUtf8(str string) string

对Unicode进行转码

func UnicodeToUtf8

func UnicodeToUtf8(str []byte) []byte

对Unicode进行转码

func Utf8ToGB18030

func Utf8ToGB18030(text string) string

GB18030

func Utf8ToGbk

func Utf8ToGbk(text string) string

GBK

Types

type BufWriteFlushCloser

type BufWriteFlushCloser struct {
	// contains filtered or unexported fields
}

实现Close时自动Flush再Close

func NewBufWriteCloser

func NewBufWriteCloser(w io.WriteCloser) *BufWriteFlushCloser

func NewBufWriteCloserSize

func NewBufWriteCloserSize(w io.WriteCloser, size int) *BufWriteFlushCloser

func (*BufWriteFlushCloser) Close

func (b *BufWriteFlushCloser) Close() error

Close closes the BufWriteFlushCloser, flushing the buffer and closing the underlying writer.

func (*BufWriteFlushCloser) Flush

func (b *BufWriteFlushCloser) Flush() error

func (*BufWriteFlushCloser) Write

func (b *BufWriteFlushCloser) Write(p []byte) (n int, err error)

type CbcAESCrypt

type CbcAESCrypt struct {
	// contains filtered or unexported fields
}

初始化向量(IV,Initialization Vector)是许多任务作模式中用于将加密随机化的一个位块, 由此即使同样的明文被多次加密也会产生不同的密文,避免了较慢的重新产生密钥的过程。 对于CBC和CFB,重用IV会导致泄露明文首个块的某些信息,亦包括两个不同消息中相同的前缀。 对于OFB和CTR而言,重用IV会导致完全失去安全性。另外,在CBC模式中,IV在加密时必须是无法预测的;

AES CBC加密时,用iv和key去加密第一个块,然后用第一个块的加密数据作为下一个块的iv,依次迭代。 解密时,用n-1个块的加密数据作为iv和key去解密第n个块(n>1),只有第一个块才会用加密时的iv去解密第一个块。 所以如果解密时,使用了错误的iv,出问题的数据只有第一个块。

分组加密在对明文加密的时候,并不是把整个明文一股脑加密成一整段密文, 而是把明文拆分成一个个独立的明文块, AES的每一个明文块长度128bit(16字节),则记块长度为BlockSize = 16。 初始化向量IV是一个长度为BlockSize的随机字节数组,对应一个伪随机数。

func NewAESCrypt

func NewAESCrypt(SecretKey []byte) (*CbcAESCrypt, error)

NewAESCryptFromHex 创建AES加密器。 第三方库使用 CBC模式,PKCS5填充。

func NewAESCryptFromHex

func NewAESCryptFromHex(HexSecretKey string) (*CbcAESCrypt, error)

NewAESCryptFromHex 创建AES加密器, HexSecretKey为16进制字符串 CBC模式,PKCS5填充

func (*CbcAESCrypt) Decrypt

func (a *CbcAESCrypt) Decrypt(cipherText []byte) ([]byte, error)

Decrypt 解密,cipherText 为 密文+16字节IV。

func (*CbcAESCrypt) Encrypt

func (a *CbcAESCrypt) Encrypt(plainText []byte) ([]byte, error)

Encrypt 加密后返回 密文+16字节IV。

type Pair

type Pair[T1, T2 any] struct {
	First  T1
	Second T2
}

type Result

type Result[T any] struct {
	Err   error
	Value T
}

type SimpleKV

type SimpleKV struct {
	// contains filtered or unexported fields
}

func NewSimpleKV

func NewSimpleKV(dbPath string) (*SimpleKV, error)

func (*SimpleKV) Delete

func (kv *SimpleKV) Delete(key string) error

func (*SimpleKV) Get

func (kv *SimpleKV) Get(key string) (string, bool)

func (*SimpleKV) Set

func (kv *SimpleKV) Set(key, value string) error

type StdBaseLogger

type StdBaseLogger interface {
	Errorf(string, ...interface{})
	Errorln(...interface{})
	Warnf(string, ...interface{})
	Warnln(...interface{})
	Infof(string, ...interface{})
	Infoln(...interface{})
	Debugf(string, ...interface{})
	Debugln(...interface{})
	Tracef(string, ...interface{})
	Traceln(...interface{})
}

type StdLogger

type StdLogger interface {
	StdBaseLogger
	Panicf(string, ...interface{})
	Panicln(...interface{})
}

type WriteFlushCloser

type WriteFlushCloser interface {
	io.WriteCloser
	Flush() error
}

Directories

Path Synopsis
usb
hid
HID package to access Human Interface Devices.
HID package to access Human Interface Devices.
usbdrivedetector
Package usbdrivedetector detects all USB storage devices connected to a computer.
Package usbdrivedetector detects all USB storage devices connected to a computer.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL