當前位置:首頁 » 密碼管理 » 代碼加密方式

代碼加密方式

發布時間: 2022-05-21 02:17:30

① 源代碼加密軟體哪個好用

  • 源代碼加密軟體推薦使用賽虎信息科技的綠盾加密軟體,是一套從源頭上保障數據安全和使用安全的軟體系統。採用的是文件透明加密模塊,對平常辦公使用是沒有影響的。而且綠盾支持與SVN等源代碼管理工具無縫結合。

  • 如果企業內部SVN伺服器採取透明模式,即加密文件是可以存放在SVN伺服器上的,需要達到的效果是SVN伺服器上文件密文存儲。則配合天銳綠盾應用伺服器安全接入系統來實現只有安裝了加密客戶端的Windows、linux、MAC端才能夠正常的訪問公司內部的SVN伺服器。

  • 如果企業內部採用eclipse、VS等開發工具,從這些開發工具將代碼直接上傳到SVN伺服器上時會自動解密。為了避免明文、密文混亂存放導致版本比對時出現錯誤等問題。因此,SVN伺服器上需統一存放明文文件。則通過伺服器白名單功能實現對終端電腦數據進行強制透明加密,對上傳到應用伺服器數據實現上傳自動解密、下載自動加密。再配合天銳綠盾應用伺服器安全接入系統實現只有安裝了加密客戶端的Windows、Linux、MAC端才能夠正常的訪問公司內部的SVN伺服器。

  • 賽虎信息科技為客戶提供優質的內網安全管理產品和適合多種行業的應用解決方案。

② iOS代碼加密的幾種方式

眾所周知的是大部分iOS代碼一般不會做加密加固,因為iOS
APP一般是通過AppStore發布的,而且蘋果的系統難以攻破,所以在iOS里做代碼加固一般是一件出力不討好的事情。萬事皆有例外,不管iOS、adr還是js,加密的目的是為了代碼的安全性,雖然現在開源暢行,但是不管個人開發者還是大廠皆有保護代碼安全的需求,所以iOS代碼加固有了生存的土壤。下面簡單介紹下iOS代碼加密的幾種方式。

iOS代碼加密的幾種方式

1.字元串加密

字元串會暴露APP的很多關鍵信息,攻擊者可以根據從界面獲取的字元串,快速找到相關邏輯的處理函數,從而進行分析破解。加密字元串可以增加攻擊者閱讀代碼的難度以及根據字元串靜態搜索的難度。

一般的處理方式是對需要加密的字元串加密,並保存加密後的數據,再在使用字元串的地方插入解密演算法。簡單的加密演算法可以把NSString轉為byte或者NSData的方式,還可以把字元串放到後端來返回,盡量少的暴露頁面信息。下面舉個簡單例子,把NSString轉為16進制的字元串:

2.符號混淆

符號混淆的中心思想是將類名、方法名、變數名替換為無意義符號,提高應用安全性;防止敏感符號被class-mp工具提取,防止IDA Pro等工具反編譯後分析業務代碼。目前市面上的IOS應用基本上是沒有使用類名方法名混淆的。

  • 別名

  • 在編寫代碼的時候直接用別名可能是最簡單的一種方式,也是比較管用的一種方式。因為你的app被破解後,假如很容易就能從你的類名中尋找到蛛絲馬跡,那離hook只是一步之遙,之前微信搶紅包的插件應該就是用hook的方式執行的。

    b.C重寫

    編寫別名的方式不是很易讀,而且也不利於後續維護,這時你可能需要升級一下你的保護方式,用C來重寫你的代碼吧。這樣把函數名隱藏在結構體中,用函數指針成員的形式存儲,編譯後,只留下了地址,去掉了名字和參數表,讓他們無從下手( from 念茜)。如下例子:

    c.腳本處理

    稍微高級一點的是腳本掃描處理替換代碼,因為要用到linux命令來編寫腳本,可能會有一點門檻,不過學了之後你就可以出去吹噓你全棧工程師的名頭啦。。。

    linux腳本比較常用的幾個命令如下:

    腳本混淆替換是用上述幾個命令掃描出來需要替換的字元串,比如方法名,類名,變數名,並做替換,如果你能熟練應用上述幾個命令,恭喜你,已經了解了腳本的一點皮毛了。

    如以下腳本搜索遍歷了代碼目錄下的需要混淆的關鍵字:

    替換的方式可以直接掃描文件並對文件中的所有內容替換,也可以採用define的方式定義別名。例如:

    d.開源項目ios-class-guard

    該項目是基於class-mp的擴展,和腳本處理類似,是用class-mp掃描出編譯後的類名、方法名、屬性名等並做替換,只是不支持隱式C方法的替換,有興趣的同學可以使用下。

    3.代碼邏輯混淆

    代碼邏輯混淆有以下幾個方面的含義:

    對方法體進行混淆,保證源碼被逆向後該部分的代碼有很大的迷惑性,因為有一些垃圾代碼的存在;

    對應用程序邏輯結構進行打亂混排,保證源碼可讀性降到最低,這很容易把破解者帶到溝里去;

    它擁有和原始的代碼一樣的功能,這是最最關鍵的。

    一般使用obfuscator-llvm來做代碼邏輯混淆,或許會對該開源工具做個簡單介紹。

    4.加固SDK

    adr中一般比較常見的加固等操作,iOS也有一些第三方提供這樣的服務,但是沒有真正使用過,不知道效果如何。

    當然還有一些第三方服務的加固產品,基本上都是採用了以上一種或幾種混淆方式做的封裝,如果想要直接可以拿來使用的服務,可以採用下,常用的一些服務如下:

    幾維安全

    iOS加密可能市場很小,但是存在必有道理,在越獄/開源/極客的眼中,你的APP並沒有你想像的那麼安全,如果希望你的代碼更加安全,就應給iOS代碼加密。

php代碼怎麼加密最好,不能破解的那種

在使用PHP開發Web應用的中,很多的應用都會要求用戶注冊,而注冊的時候就需要我們對用戶的信息進行處理了,最常見的莫過於就是郵箱和密碼了,本文意在討論對密碼的處理:也就是對密碼的加密處理。
MD5
相信很多PHP開發者在最先接觸PHP的時候,處理密碼的首選加密函數可能就是MD5了,我當時就是這樣的:
$password = md5($_POST["password"]);
上面這段代碼是不是很熟悉?然而MD5的加密方式目前在PHP的江湖中貌似不太受歡迎了,因為它的加密演算法實在是顯得有點簡單了,而且很多破解密碼的站點都存放了很多經過MD5加密的密碼字元串,所以這里我是非常不提倡還在單單使用MD5來加密用戶的密碼的。
SHA256 和 SHA512
其實跟前面的MD5同期的還有一個SHA1加密方式的,不過也是演算法比較簡單,所以這里就一筆帶過吧。而這里即將要說到的SHA256 和 SHA512都是來自於SHA2家族的加密函數,看名字可能你就猜的出來了,這兩個加密方式分別生成256和512比特長度的hash字串。
他們的使用方法如下:
<?php
$password = hash("sha256", $password);
PHP內置了hash()函數,你只需要將加密方式傳給hash()函數就好了。你可以直接指明sha256, sha512, md5, sha1等加密方式。
鹽值
在加密的過程,我們還有一個非常常見的小夥伴:鹽值。對,我們在加密的時候其實會給加密的字元串添加一個額外的字元串,以達到提高一定安全的目的:
<?php
function generateHashWithSalt($password) {$intermediateSalt = md5(uniqid(rand(), true));$salt = substr($intermediateSalt, 0, 6);
return hash("sha256", $password . $salt);}
Bcrypt
如果讓我來建議一種加密方式的話,Bcrypt可能是我給你推薦的最低要求了,因為我會強烈推薦你後面會說到的Hashing API,不過Bcrypt也不失為一種比較不錯的加密方式了。
<?php
function generateHash($password) {
if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {$salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);return crypt($password, $salt);
}
}
Bcrypt 其實就是Blowfish和crypt()函數的結合,我們這里通過CRYPT_BLOWFISH判斷Blowfish是否可用,然後像上面一樣生成一個鹽值,不過這里需要注意的是,crypt()的鹽值必須以$2a$或者$2y$開頭,詳細資料可以參考下面的鏈接:
http://www.php.net/security/crypt_blowfish.php更多資料可以看這里:
http://php.net/manual/en/function.crypt.phpPassword Hashing API
這里才是我們的重頭戲,Password Hashing API是PHP 5.5之後才有的新特性,它主要是提供下面幾個函數供我們使用:
password_hash() – 對密碼加密.
password_verify() – 驗證已經加密的密碼,檢驗其hash字串是否一致.
password_needs_rehash() – 給密碼重新加密.
password_get_info() – 返回加密演算法的名稱和一些相關信息.
雖然說crypt()函數在使用上已足夠,但是password_hash()不僅可以使我們的代碼更加簡短,而且還在安全方面給了我們更好的保障,所以,現在PHP的官方都是推薦這種方式來加密用戶的密碼,很多流行的框架比如Laravel就是用的這種加密方式。
<?php
$hash = password_hash($passwod, PASSWORD_DEFAULT);對,就是這么簡單,一行代碼,All done。
PASSWORD_DEFAULT目前使用的就是Bcrypt,所以在上面我會說推薦這個,不過因為Password Hashing API做得更好了,我必須鄭重地想你推薦Password Hashing API。這里需要注意的是,如果你代碼使用的都是PASSWORD_DEFAULT加密方式,那麼在資料庫的表中,password欄位就得設置超過60個字元長度,你也可以使用PASSWORD_BCRYPT,這個時候,加密後字串總是60個字元長度。
這里使用password_hash()你完全可以不提供鹽值(salt)和 消耗值 (cost),你可以將後者理解為一種性能的消耗值,cost越大,加密演算法越復雜,消耗的內存也就越大。當然,如果你需要指定對應的鹽值和消耗值,你可以這樣寫:
<?php
$options = [
'salt' => custom_function_for_salt(), //write your own code to generate a suitable salt'cost' => 12 // the default cost is 10
];
$hash = password_hash($password, PASSWORD_DEFAULT, $options);密碼加密過後,我們需要對密碼進行驗證,以此來判斷用戶輸入的密碼是否正確:
<?php
if (password_verify($password, $hash)) {
// Pass
}
else {
// Invalid
}
很簡單的吧,直接使用password_verify就可以對我們之前加密過的字元串(存在資料庫中)進行驗證了。
然而,如果有時候我們需要更改我們的加密方式,如某一天我們突然想更換一下鹽值或者提高一下消耗值,我們這時候就要使用到password_needs_rehash()函數了:
<?php
if (password_needs_rehash($hash, PASSWORD_DEFAULT, ['cost' => 12])) {// cost change to 12
$hash = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]);// don't forget to store the new hash!
}
只有這樣,PHP的Password Hashing API才會知道我們重現更換了加密方式,這樣的主要目的就是為了後面的密碼驗證。
簡單地說一下password_get_info(),這個函數一般可以看到下面三個信息:
algo – 演算法實例
algoName – 演算法名字
options – 加密時候的可選參數
所以,現在就開始用PHP 5.5吧,別再糾結低版本了。
Happy Hacking

④ PHP中給源代碼加密的幾種方法

<?php
function encode_file_contents($filename) {
$type=strtolower(substr(strrchr($filename,'.'),1));
if ('php' == $type && is_file($filename) && is_writable($filename)) { // 如果是PHP文件 並且可寫 則進行壓縮編碼
$contents = file_get_contents($filename); // 判斷文件是否已經被編碼處理
$contents = php_strip_whitespace($filename);

// 去除PHP頭部和尾部標識
$headerPos = strpos($contents,'<?php');
$footerPos = strrpos($contents,'?>');
$contents = substr($contents, $headerPos + 5, $footerPos - $headerPos);
$encode = base64_encode(gzdeflate($contents)); // 開始編碼
$encode = '<?php'."\n eval(gzinflate(base64_decode("."'".$encode."'".")));\n\n?>";

return file_put_contents($filename, $encode);
}
return false;
}

//調用函數
$filename = 'dam.php';
encode_file_contents($filename);
echo "OK,加密完成!"
?>

<?php

function RandAbc($length = "") { // 返回隨機字元串
$str = "";
return str_shuffle($str);
}

$filename = 'index.php'; //要加密的文件
$T_k1 = RandAbc(); //隨機密匙1
$T_k2 = RandAbc(); //隨機密匙2
$vstr = file_get_contents($filename);
$v1 = base64_encode($vstr);
$c = strtr($v1, $T_k1, $T_k2); //根據密匙替換對應字元。
$c = $T_k1.$T_k2.$c;
$q1 = "O00O0O";
$q2 = "O0O000";
$q3 = "O0OO00";
$q4 = "OO0O00";
$q5 = "OO0000";
$q6 = "O00OO0";
$s = '$'.$q6.'=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$'.$q1.'=$'.$q6.'{3}.$'.$q6.'{6}.$'.$q6.'{33}.$'.$q6.'{30};$'.$q3.'=$'.$q6.'{33}.$'.$q6.'{10}.$'.$q6.'{24}.$'.$q6.'{10}.$'.$q6.'{24};$'.$q4.'=$'.$q3.'{0}.$'.$q6.'{18}.$'.$q6.'{3}.$'.$q3.'{0}.$'.$q3.'{1}.$'.$q6.'{24};$'.$q5.'=$'.$q6.'{7}.$'.$q6.'{13};$'.$q1.'.=$'.$q6.'{22}.$'.$q6.'{36}.$'.$q6.'{29}.$'.$q6.'{26}.$'.$q6.'{30}.$'.$q6.'{32}.$'.$q6.'{35}.$'.$q6.'{26}.$'.$q6.'{30};eval($'.$q1.'("'.base64_encode('$'.$q2.'="'.$c.'";eval(\'?>\'.$'.$q1.'($'.$q3.'($'.$q4.'($'.$q2.',$'.$q5.'*2),$'.$q4.'($'.$q2.',$'.$q5.',$'.$q5.'),$'.$q4.'($'

⑤ file_group_id的加密方式

具體操作如下:
首先,先介紹下加密函數,PASSWORD(string)函數可以對字元串string進行加密,代碼如下:
SELECTPASSWORD('you');
2
執行第一步的SQL語句,查詢結果是一串字元串,並且PASSWORD(string)函數加密是不可逆轉,
如下圖所示:
3
另外一個加密函數MD5(string),主要針對普通的數據進行加密,代碼如下:
SELECTMD5('hai');
4
最後一個加密函數ENCODE(string,pass),可以使用字元串pass來加密字元串string。首先要創建一個資料庫表t_pass_info,代碼如下:
CREATETABLEt_pass_info(
idint(10),
pass_infoblob
);
5
然後,向這個資料庫表插入一條數據,代碼如下:
INSERTINTOt_pass_info(id,pass_info)VALUES
(1,ENCODE('dong','bb'));
6
查看插入資料庫表t_pass_info記錄,代碼如下:
SELECT*FROM
t_pass_info;
7
MySQL自帶還有一個解密函數DECODE(str,pass_str),可以使用字元串pass_str來為str解密,代碼如下:
SELECTDECODE(ENCODE('dong','aa'),'aa')。

⑥ 如何對公司的源代碼加密

對公司源代碼加密的話 我推薦使用域之盾軟體 以下是軟體加密的具體流程 希望可以幫到你。

1,首先安裝軟體 安裝完成後 開啟 透明加密。對重要文件進行加密。

2,通過 軟體限制陌生u盤的試用,設置只讀或禁止使用。對常用U盤設置白名單

3,開啟軟體的外發審核,外發的一切文件資料 等 需要管理員審核否則非法外發 即為亂碼。

python 如何保密源代碼

python 如何保密源代碼?

相關推薦:《Python教程》

加密方式
對 Python 加密時可能會有兩種形式,一種是對Python轉成的exe進行保護,另一種是直接對.py或者.pyc文件進行保護,下面將列舉兩種形式的保護流程。

1、對 python轉exe加密,下載最新版Virbox Protector加密工具,使用加密工具直接對demo.exe進行加密操作。

2、對.py/.pyc加密。

第一步,使用加密工具對 python 安裝目錄下的 python.exe 進行加密,將 python.exe 拖入到加密工具 VirboxProtector 中,配置後直接點擊加密。

第二步,對.py/.pyc 進行加密,使用 DSProtector 對.py/.pyc 進行保護。

⑧ 給Excel2007 VBA代碼加密的方法

方法/步驟
1、打開Excel2007啟用宏的Excel文件
2、同時按下ALT+F11鍵,打開VBA編輯器窗口。
3、查看對應的代碼窗口,左側VBA工程
PROJECT屬性框中對應相應的SHEET表或者模塊。
4、點擊對應的SHEET表或者模塊名稱,滑鼠右鍵放在其上,選擇VBAPROJECT屬性。
5、在彈出的VBAPROJECT工程屬性窗口中-保護選項卡-選中查看時鎖定工程,“查看工程屬性的密碼”內輸入自己要設定的密碼。
6、點擊確認,然後點擊文件工具欄內的保存按鈕。
7、下次打開Excel文件時再同時按下ALT+F11進入VBA代碼編輯器,滑鼠左鍵雙擊左側VBA工程中的VBAPROJECT文件名稱,彈出VBAPROJECT密碼輸入窗口,輸入密碼才可進入,否則無法查看工程密碼,呵呵。

⑨ 源代碼加密哪個軟體好

  • 源代碼加密軟體推薦使用賽虎信息科技的綠盾加密軟體,是一套從源頭上保障數據安全和使用安全的軟體系統。採用的是文件透明加密模塊,對平常辦公使用是沒有影響的。而且綠盾支持與SVN等源代碼管理工具無縫結合。

  • 如果企業內部SVN伺服器採取透明模式,即加密文件是可以存放在SVN伺服器上的,需要達到的效果是SVN伺服器上文件密文存儲。則配合天銳綠盾應用伺服器安全接入系統來實現只有安裝了加密客戶端的Windows、Linux、MAC端才能夠正常的訪問公司內部的SVN伺服器。

  • 如果企業內部採用eclipse、VS等開發工具,從這些開發工具將代碼直接上傳到SVN伺服器上時會自動解密。為了避免明文、密文混亂存放導致版本比對時出現錯誤等問題。因此,SVN伺服器上需統一存放明文文件。則通過伺服器白名單功能實現對終端電腦數據進行強制透明加密,對上傳到應用伺服器數據實現上傳自動解密、下載自動加密。再配合天銳綠盾應用伺服器安全接入系統實現只有安裝了加密客戶端的Windows、Linux、MAC端才能夠正常的訪問公司內部的SVN伺服器。

  • 賽虎信息科技為客戶提供優質的內網安全管理產品和適合多種行業的應用解決方案。

⑩ c#怎麼給源代碼加密,就是就算給別人源代碼

c# dll 加密最快的方法使用加殼工具Virbox Protector,直接加密,Virbox Protectorke可以對dll進行性能分析,分析每個函數的調用次數,對每個函數選擇保護方式如:混淆/虛擬化/碎片化/代碼加密等;每種加密方法的特點是什麼呢?
代碼加密(X86):
針對X86匯編代碼:一種代碼自修改技術(SMC)保護代碼。把當前代碼加密存儲為密文,存儲起來,當程序運行到被保護函數時候自動解密並且執行,執行之後再擦除代碼,運行到哪裡才解密哪裡的代碼,黑客無法獲得原始機器指令和內存完整性的代碼,由於是純內存操作所以運行速度快, 性價高的保護手段,建議全加
代碼加密(IL)
針對dotNet程序,保護IL代碼:一種動態運行方法解密被保護代碼。把當前代碼加密存儲為密文,存儲起來,當程序運行到被保護函數時候自動解密並且執行,執行之後再擦除代碼,執行之後再擦除代碼,運行到哪裡才解密哪裡的代碼,黑客無法獲得原始的中間語言的指令和內存完整性的代碼,由於是純內存操作所以運行速度快, 性價高的保護手段,建議全加
壓縮
類似zip等壓縮軟體把代碼和數據段壓縮,由於帶有動態密碼,沒有任何工具可以自動脫殼,是防止反編譯和反匯編關鍵手段。
代碼混淆(IL):
將代碼中的各種元素,如變數,函數,類的名字改寫成無意義的名字。比如改寫成單個字母,或是簡短的無意義字母組合,甚至改寫成「__」這樣的符號,使得閱讀的人無法根據名字猜測其用途。
a)重寫代碼中的部分邏輯,將其變成功能上等價,但是更難理解的形式。比如將for循環改寫成while循環,將循環改寫成遞歸,精簡中間變數,等等。
b) 打亂代碼的格式。比如刪除空格,將多行代碼擠到一行中,或者將一行代碼斷成多行等等。
c) 添加花指令,通過特殊構造的指令來使得反匯編器出錯,進而干擾反編譯工作的進行。
代碼混淆器也會帶來一些問題。主要的問題包括:· 被混淆的代碼難於理解,因此調試除錯也變得困難起來。開發人員通常需要保留原始的未混淆的代碼用於調試。· 對於支持反射的語言,代碼混淆有可能與反射發生沖突。· 代碼混淆並不能真正阻止反向工程,只能增大其難度。因此,對於對安全性要求很高的場合,僅僅使用代碼混淆並不能保證源代碼的安全。
代碼混淆的特點是安全度低、不會影響效率。
代碼虛擬化:
針對X86代碼: 是指將機器代碼翻譯為機器和人都無法識別的一串偽代碼位元組流;在具體執行時再對這些偽代碼進行一一翻譯解釋,逐步還原為原始代碼並執行。 這段用於翻譯偽代碼並負責具體執行的子程序就叫作虛擬機VM(好似一個抽象的CPU)。它以一個函數的形式存在,函數的參數就是位元組碼的內存地址。 由於虛擬機代碼和虛擬機CPU的實現可以做到每次都是隨機設計和隨機執行 並且代碼每次可以隨機變化,包括一些邏輯上的等價變化可以參考硬體N個與非門NOT-AND實現各種邏輯門,演算法和訪問內存形式的變化,包括數學上的非等價變化,代碼體積幾乎可以膨脹達到100到10000倍,造成機器無法做演算法還原到原有邏輯。
代碼虛擬化的特點是:安全度中、不會影響效率。
代碼碎片化:
深思自主知識產權的最新技術:基於 LLVM 和 ARM 虛擬機技術,自動抽取海量代碼移入 SS 內核態模塊,極大的降低了使用門檻, 不再需要手動移植演算法,可移植的演算法從有限的幾個增長到幾乎無限多,支持的語言也不再限於 C, 這是加密技術的一次綜合應用,效果上類似於將軟體打散執行,讓破解者無從下手。
安全度高、建議關鍵函數或調用加密鎖方法;使用太多會影響效率

熱點內容
android服務是什麼 發布:2025-05-20 02:19:31 瀏覽:201
什麼手機可以升到安卓十 發布:2025-05-20 02:19:24 瀏覽:570
手機U盤安卓的系統目錄里有什麼 發布:2025-05-20 02:13:08 瀏覽:849
python多進程鎖 發布:2025-05-20 02:12:23 瀏覽:293
n皇後演算法 發布:2025-05-20 01:49:15 瀏覽:66
如何配置圖形電腦 發布:2025-05-20 01:47:51 瀏覽:392
及解壓 發布:2025-05-20 01:44:49 瀏覽:416
如何用計算器刷安卓 發布:2025-05-20 01:09:29 瀏覽:577
移動寬頻密碼重置後怎麼辦 發布:2025-05-20 01:02:04 瀏覽:808
php不是內部命令 發布:2025-05-20 00:41:09 瀏覽:97