加密和解密的一個非常簡單的方法是extended tiny encription algorithm (XTEA)。我在這裏粘貼維基百科的C++代碼,但請記住任何人都可以在那裏改變它。
#include <stdint.h>
/* take 64 bits of data in v[0] and v[1] and 128 bits of key[0] - key[3] */
void encipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4]) {
unsigned int i;
uint32_t v0=v[0], v1=v[1], sum=0, delta=0x9E3779B9;
for (i=0; i < num_rounds; i++) {
v0 += (((v1 << 4)^(v1 >> 5)) + v1)^(sum + key[sum & 3]);
sum += delta;
v1 += (((v0 << 4)^(v0 >> 5)) + v0)^(sum + key[(sum>>11) & 3]);
}
v[0]=v0; v[1]=v1;
}
void decipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4]) {
unsigned int i;
uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*num_rounds;
for (i=0; i < num_rounds; i++) {
v1 -= (((v0 << 4)^(v0 >> 5)) + v0)^(sum + key[(sum>>11) & 3]);
sum -= delta;
v0 -= (((v1 << 4)^(v1 >> 5)) + v1)^(sum + key[sum & 3]);
}
v[0]=v0; v[1]=v1;
}
雖然這不是真正的加密。如果腳本可以獲取明文密碼,那麼任何有權限的人都可以運行它。 – pguardiario 2012-07-10 00:30:14
你不能真正與加密爭論。如果它被加密,則它被加密。我的意思是,你可以將密碼與代碼分開,並將它們(加密)存儲在數據庫中,但只能通過主密碼使其可用。 OP如何決定處理主密碼完全取決於他。例如。在啓動時提示用戶輸入主密碼會阻止對密碼的未授權訪問。當然,「任何有權運行它的人」都可以,但這並不意味着訪問密碼。 – jurgemaister 2012-07-10 06:20:34
嗯,提示輸入密碼是好的,但問題是如何存儲密碼。使用「主密碼」確實會增加一些不必要的複雜性,並且就加密而言......我看不出您希望從rot13或您使用的任何可逆方案獲得什麼保護。如果我可以運行腳本,我可以看到密碼。 – pguardiario 2012-07-10 06:42:33