你好大神,我想把表格資料加密后上傳到云盤,以保證資料安全。
麻煩做一個.xlsm的檔案,我小白白一個,請代碼加詳細注釋,萬分感謝,感激涕零!
思路是:
一、加密
1、把數值轉換為ASCLL碼賦值給陣列 i
2、把我手動輸入的口令轉換成ASCLL碼賦值給陣列 a
3、把陣列 i 和 陣列 a 做矩陣運算后賦值給陣列 x
4、把陣列 x 轉換為文本
二、解密
逆運算
資料列包含一下內容:
姓名 手機號 身份證號 銀行卡號 密碼 家庭住址
ps:數值中包含字母,符號,漢字,拆分后轉碼
這種方法能保證資料泄漏后的安全嗎?
uj5u.com熱心網友回復:
只要加密演算法足夠安全、密鑰復雜度較高,肯定可以保證安全。想要用Excel檔案來存盤加密后的資料,
那么必須用可逆加密演算法對明文進行加密、再把密文轉換成BASE64編碼寫回相應的單元格。
“解密操作”自然就是對應的“逆程序”了。
加密解密主要用DES演算法,或AES演算法,當然也可選用其它的。
你用“xlsm檔案”,就是想把加密、解密程序的代碼都寫在檔案中吧?
這樣其實不太好!
就算你“密碼保護VBA工程”,也有方法很容易的越過這道“屏障”;
代碼一暴露,你的密文被破解的可能性就增加了一些,安全度就有所降低了。
要想保險,就必須把加密、解密的程式,與存盤資訊的檔案分離。
這樣:用你的“專用軟體”,打開“明文檔案”進行加密、輸出加密檔案;或者打開“密文檔案”,進行解密查看原文。
只要你的“加密、解密軟體”不泄露,傳到云盤中的“加密檔案”就基本不用擔心被解密。
思路、方法已經給你說了,代碼還是你自己寫吧。
這個我不想做“義務工”,完整工程代碼,付費的話可以考慮。
uj5u.com熱心網友回復:
樓主可以看一下這兒:http://blog.sina.com.cn/s/blog_1551057520102wtey.html
這個博客中的內容,就是我以前給某人寫的程式加密后的資訊。
每一行就是一條資訊,包含 登錄埠號、服務器IP地址:埠號 等資訊,并且還有“校驗碼”在內。
你要是“亂輸入的密文”(即使是一串完全合法的BASE64編碼文本),
經“解密”后不能通過“校驗碼”驗證,那么也是“無效”的資料。
這個博客中,大概有500條吧。
uj5u.com熱心網友回復:
能否把這個程式發出來學習學習呀?
uj5u.com熱心網友回復:
呵呵,這個嘛……你如何“學習”呢!
要是說“發個exe程式”,你肯定也是什么都“學”不到;
要是把代碼發出來,這根本就是“你想多了”……
這么說吧:
那些“BASE64編碼文本”,每一行經“解密”(就是“BASE64轉二進制序列”)后,就包含了“密鑰(偽)”和密文。
當然這個“密鑰”肯定不是真正的密鑰,而是要這組資料再經過一個特定的變換演算法,才得到“真正的密鑰”;
只是加密和解密,都是以這組“偽密鑰”為依據,再“算”出真正的密鑰而已。
這兒的“偽密鑰”就是加密時,隨機產生的幾位元組資料;因此每一條密文的密鑰都是不同的!
因為是“隨機產生的密鑰”,所以每條密文的“真正密鑰”是什么,都是“不知道”的(只能按我的特定演算法算出來)。
不過,你以為能“算”出解密密鑰就OK了? 呵呵,圖樣……

按我2樓說的內容:IP地址、埠號、再加上“偽密鑰”,根本就沒幾個位元組資料,“加密”后也同樣沒幾個位元組;
再加上“偽密鑰資料”,照樣也沒多少資料。
但是,你可以看到博客中的“記錄”有的長、有的短;BASE64解密后長的是54位元組、短的是30位元組。
其實是因為我把“IP地址(4位元組)”嵌入到一串隨機資料中(位置隨機、“亂數”起干擾作用)。
所以,在“密文”解密之后,看起來照樣是一串“雜亂無章”的位元組資料。

可以說,即使把“明文”給你看,你也不知道如何提取“有效資料”出來。
當然,我這兒說了這么多,高手肯定可以從博文中猜測到我的“核心加密演算法”是什么、偽密鑰是多少位元組了。
雖然那些資料資訊,幾乎是“對任何人”來說都沒有一丁點兒價值(想攻擊他的服務器的除外),但我也不會透露具體細節。
如果我把“演算法細節”都說了,那么就是“誰都可以解密”的了。
只要這個“細節”不透露出來,可以說:除我之外,沒有誰能解密!

(因為加密演算法、BASE64編碼,都是標準的、公開的;從“偽密鑰”算出真正密鑰、以及“資料混淆法”就是“機密”了)
uj5u.com熱心網友回復:
樓主可以看一下這兒:
http://blog.sina.com.cn/s/blog_1551057520102wtey.html
這個博客中的內容,就是我以前給某人寫的程式加密后的資訊。
每一行就是一條資訊,包含 登錄埠號、服務器IP地址:埠號 等資訊,并且還有“校驗碼”在內。
你要是“亂輸入的密文”(即使是一串完全合法的BASE64編碼文本),
經“解密”后不能通過“校驗碼”驗證,那么也是“無效”的資料。
這個博客中,大概有500條吧。
能否把這個程式發出來學習學習呀?
呵呵,這個嘛……你如何“學習”呢!
要是說“發個exe程式”,你肯定也是什么都“學”不到;
要是把代碼發出來,這根本就是“你想多了”……
這么說吧:
那些“BASE64編碼文本”,每一行經“解密”(就是“BASE64轉二進制序列”)后,就包含了“密鑰(偽)”和密文。
當然這個“密鑰”肯定不是真正的密鑰,而是要這組資料再經過一個特定的變換演算法,才得到“真正的密鑰”;
只是加密和解密,都是以這組“偽密鑰”為依據,再“算”出真正的密鑰而已。
這兒的“偽密鑰”就是加密時,隨機產生的幾位元組資料;因此每一條密文的密鑰都是不同的!
因為是“隨機產生的密鑰”,所以每條密文的“真正密鑰”是什么,都是“不知道”的(只能按我的特定演算法算出來)。
不過,你以為能“算”出解密密鑰就OK了? 呵呵,圖樣……
按我2樓說的內容:IP地址、埠號、再加上“偽密鑰”,根本就沒幾個位元組資料,“加密”后也同樣沒幾個位元組;
再加上“偽密鑰資料”,照樣也沒多少資料。
但是,你可以看到博客中的“記錄”有的長、有的短;BASE64解密后長的是54位元組、短的是30位元組。
其實是因為我把“IP地址(4位元組)”嵌入到一串隨機資料中(位置隨機、“亂數”起干擾作用)。
所以,在“密文”解密之后,看起來照樣是一串“雜亂無章”的位元組資料。
可以說,即使把“明文”給你看,你也不知道如何提取“有效資料”出來。
當然,我這兒說了這么多,高手肯定可以從博文中猜測到我的“核心加密演算法”是什么、偽密鑰是多少位元組了。
雖然那些資料資訊,幾乎是“對任何人”來說都沒有一丁點兒價值(想攻擊他的服務器的除外),但我也不會透露具體細節。
如果我把“演算法細節”都說了,那么就是“誰都可以解密”的了。
只要這個“細節”不透露出來,可以說:除我之外,沒有誰能解密!
(因為加密演算法、BASE64編碼,都是標準的、公開的;從“偽密鑰”算出真正密鑰、以及“資料混淆法”就是“機密”了)
首先非常感謝你對我的耐心解答,告訴我思路,但我是小白白一個,還是出不了師呀,你可以把你的演算法修改了嘛,這樣就是一個示例了呀。我就是好想把這個問題解決了,要不我就只能存了U盤里隨身攜帶了,但又害怕丟失或損壞
uj5u.com熱心網友回復:
用不著這么費事。買一個支持檔案加密的安全 U 盤就可以。我們的一個用戶出產這樣的 U 盤。方案都是我們提供的。可以方便地將 PC 上的任何檔案加密解密。而且,密鑰是在安全芯片內,是確定安全的。
uj5u.com熱心網友回復:
上傳云盤還要加密,用RAR壓縮一下加個夠長的密碼就行了。不要太指望xlsm的工程加密,那玩意防君子不防小人。
你把xlsm的工程加密保存,然后綴改成.zip,解壓開來,可以找到一個bin檔案,用UE啥的看看,代碼明文就在那里擺著,你的演算法一目了然,解密你的資料也很輕松。
自己神叨叨的弄一些所謂自創的加密演算法,其實大部分都很弱啦。用公開成熟的標準加密演算法,都是久經考驗,解密都是被數學證明困難或者沒法被數學證明容易的。
uj5u.com熱心網友回復:
如果要U盤加密啥的,用微軟的bitlock賊方便,加密強度也夠,win7以上支持,你還在用XP的話另論轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/49984.html
標籤:VBA
下一篇:請問有加密一個檔案夾的思路嗎?
