Matlab的加密程式語言——P Code

2020-12-15 程小猿廝

Matlab作為一款科研工具,採用的時腳本語言–M語言進行編程和運行,腳本語言的特性就是其不需要編譯就可以運行,因此大家也通常直接使用原始語言進行程序的分享,從科學成果溝通共享的角度來看,這樣是更有利於科技的發展的。

但是實際情況下,在Matlab下完成一套平臺或者工具的開發同樣是非常費時費力的,直接給出完整的代碼很容易讓他人擁有抄襲的機會,而且有時候我們分享的目的是為了演示功能而不是給出解題思路。

針對這種需求,Matlab給出了2種解決辦法

以 P 代碼的形式部署 – 將您的某些或全部原始碼文件轉換為一種名為 P 代碼文件(文件擴展名為 .p)的掩蓋內容的格式,並以此格式來分發您的應用程式代碼。當 MATLAB 將某文件轉換為 P 代碼文件時,該文件將進行模糊處理而非加密。雖然 .p 文件中的內容難以理解,但不應將其視為安全的。建議不要使用 P 代碼文件以便保護您的智慧財產權。(ps:MATLAB 不支持將實時腳本或實時函數轉換為 P 代碼文件)編譯為二進位格式 – 使用 MATLAB Compiler 編譯您的原始碼文件以生成獨立應用程式。將後者分發給應用程式的最終用戶。

P-code實現方式

其中p代碼轉換相比二進位編譯是相當簡單和方便的,如果你只是想小範圍的分享你的代碼又不想別人知道你的實現細節,就可以考慮用P代碼的形式實現。P代碼轉換是通過調用pcode函數實現

請在 MATLAB 命令行窗口中輸入以下命令:

pcode file1 file2, …該命令生成文件 file1.p、file2.p 等。要將當前文件夾中的所有 .m

源文件轉換為 P 代碼文件,請使用以下命令:

pcode *.m

P-code安全性

那麼Matlab的P-code的完全性咋樣呢,首先我們需要了解P-code的工作方式,從m語言變成P-code再到Matlab運行出結果主要發生了以下步驟

讀取m語言源碼,將其轉換為實際Matlab運行用的代碼(Matlab運行過程好像是會對代碼語句進行一定的轉換,但是這種轉換是很快的)。將上述代碼用AES算法進行加密得到P-Code。(AES的密鑰Mathworks已知,因此可知該加密密碼不是完全隨機生成,大家用的都是一個密鑰,當然隨機生成的話,你換臺電腦就跑不了)。對P-code進行解密得到Matlab運行用的代碼。(實際已經有國外大神完成了這一步驟,製作了P-Code的解碼器,但是由於Mathworks壓力已經下線了)運行出結果

De-PCode Online Utility

可知實際P-code的安全性和隱蔽性還是有點堪憂的,其主要的目的在個人分享的過程可以提供一種簡單的代碼保護方式(上面的解碼器目前是不存在的),而非一種代碼的發行方式。

相關焦點

  • matlab是什麼程式語言?matlab是程式語言嗎
    使用 MATLAB,您可以較使用傳統的程式語言(如 C、C++ 和 Fortran)更快地解決技術計算問題。MATLAB 是美國MathWorks公司出品的商業數學軟體,用於算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulink兩大部分。
  • 如何使用Matlab編程進行參數擬合
    polyfit(x,y,n)[p,s]= polyfit(x,y,n)x,y為數據點,n為多項式階數,返回p為冪次從高到低的多項式係數向量p。code File Robust_Fit4.4 非線性問題使用matlab函數-lsqcurvefit,lsqnonlin[x resnorm] = lsqcurvefit(fun,x0,xdata,ydata,...)fun   是我們需要擬合的函數,x0    是我們對函數中各參數的猜想值,xdata
  • matlab和c語言的區別
    MATLAB可以進行矩陣運算、繪製函數和數據、實現算法、創建用戶界面、連接其他程式語言的程序等,主要應用於工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。二、C語言簡介C語言是一門通用計算機程式語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的程式語言。
  • python和matlab哪個好?
    Python執行:Python在執行時,首先會將.py文件中的原始碼編譯成Python的byte code(字節碼),然後再由Python Virtual Machine(Python虛擬機)來執行這些編譯好的byte code。這種機制的基本思想跟Java,.NET是一致的。
  • The Hour of Code 編程一小時
    任何人在任何地方都可以組織「編程一小時」活動。教學內容長1小時,有30多種語言支持。學習此課程無需編程經驗。「在信息化的時代,毫無疑問程式設計師成了這個時代最性感的職業之一!但是對於我們普通人,我們有必要學習編程嗎?我們每個人都應該學習編程!然而,90%的學校都沒有提供計算機科學課程!在去年,由code.org舉行的The  Hour of Code活動!
  • 工科神器matlab高校遭禁用,網友:關我p事,python可取而代之
    國內兩所一流高校,985的哈工大和211的哈工程,被禁用美國軟體matlab。 這兩所學校的學生,近日收到了郵件:matlab停止服務,之前安裝的校園版matlab也不能用了。
  • [優化] 《MATLAB高效編程技巧與應用:25個案例分析》源程序+數據
    《MATLAB高效編程技巧與應用:25個案例分析》源程序+數據 所屬分類:計算機 > 計算機輔助設計與工程計算 > Matlab 內容簡介本書是作者八年matlab使用經驗的總結,精心設計的所有案例均來自於國內各大matlab技術論壇網友的切身需求,其中不少案例涉及的內容和求解方法在國內現已出版的matlab書籍中鮮有介紹
  • Matlab基礎知識概述
    經幾年的校際流傳,在Little 的推動下,由Little、Moler、Steve Bangert 合作,於1984年成立了MathWorks 公司,並把MATLAB 正式推向市場。從這時起,MATLAB 的內核採用C 語言編寫,而且除原有的數值計算能力外,還新增了數據圖視功能。
  • MATLAB實際編程的技巧
    好的編程習慣影響編程效率、影響程序運行的時間,如何才能在很少的時間裡寫出高質量的MATLAB的代碼,下面將會介紹一些編程常用的小技巧。
  • Matlab - Matlab下載_Matlab軟體下載「數學軟體」-太平洋下載中心
    ,更為直觀方便;3、Matlab7.0下載官方版用戶體驗Matlab友好的用戶界面及接近數學表達式的自然化語言,創造了極佳的用戶體驗,使用戶更易於學習和掌握;4、Matlab7.0下載官方版功能齊全除了基本的計算功能等,Matlab還內置功能豐富的應用工具箱(如信號處理工具箱、通信工具箱等) ,為用戶提供了大量方便實用的處理工具。
  • 學習matlab必去的10大網站
    Help Center是MathWorks公司推出的集matlab參考文檔、程序示例、函數集合、視頻簡介、疑難解答於一體的綜合matlab學習平臺。在這裡不僅學習基礎matlab編程,還包括simulink、工具箱等高階matlab知識,是提升matlab編程能力不可不去的地方。
  • CodeMeter:軟體加密的「木桶定律」
    那麼軟體加密又是由哪些板塊組成的呢?軟體加密的第一塊板---代碼加密軟體代碼包含軟體的智慧財產權及核心技術。.Net是構架於作業系統之上的平臺,由於其解釋型的開發語言上手簡單、效率高,成為軟體開發商及程式設計師的重要開發工具。採用Reflector或ildasm可以輕而易舉的對.net程序進行反編譯,並且反編譯得到代碼也極具權威。
  • 32個實用matlab編程技巧
    今天給大家介紹一些matlab編程小技巧,希望對大家學習matlab有所幫助。 5、定義循環變量時,儘量不要使用i和j,因為i和j是matlab預留的虛數單位。 6、在m文件前面使用clear,close,clc等命令可以釋放內存、清理窗口。
  • MATLAB程序設計語言(1)---入門
    轉載請註明出處MATLAB功能強大,編程方便,是國際廣泛使用的計算軟體。目前已有很多書籍介紹其在工程上的應用,但很少有從程序設計語言的角度寫的書或文章。如今MATLAB既是一門程式語言,也指一種編程環境,它是一成套集成的軟體體系,並具有如下特點:一切皆為數組的數據類型設計,語言抽象能力大幅跨越,大大提升了代碼簡潔性和可讀性;動態類型(無需顯式數據類型聲明)、弱類型(變量獲得類型後仍可賦值為另一種數據類型
  • 大神帶你玩轉matlab圖像處理(6)——Hough變換
    %若p大於0,則將點存儲在(d,2d)空間 if(p > 0) s(k,d+p)=s(k,d+p)+1; %(a,p)相應的累加器單元加1 z{k,d+p}=[z{k,d+p},[i,j]']; %存儲點坐標 else
  • 代寫程序代做C++ Java matlab python php留學生設計代碼編程
    有限計算的程序29、代做navisworks做動畫,最快最快多久30、代做matlab寫有限程序31、代做amesim我需要設置一個複雜分段信號32、代做請問會Adams的動力總成懸置優化嗎33、代做excel規劃求解34、代做結構強度校核35、代做FORTRAN 有限編程36、代做幫忙做
  • Code Runner for VS Code 突破 2000 萬下載量!支持超過 50 種語言
    還記得五年前的夏天,我在巨硬寫著世界上最好的語言,有時也需要帶著遊標卡尺寫著另一門語言
  • 學好少兒編程,從Code開始(一)
    code一邊教孩子編程,一邊詳細介紹更多相關基礎知識的教育模式。而且code的教學內容從簡易的編程知識點逐步深入教學,也更適合有興趣學習難度更高的計算機知識和編程技能的學生。也使得這部分家長們對於孩子後續進行更專業性的編程學習減少了擔憂。小編整理了之前採訪到的這樣一個實例。這是一位在家長全程陪同下使用code進行編程學習的小朋友。
  • C語言編程核心要點
    原文標題C語言編程核心要點,男人看了沉默,女人看了本文轉載自【微信公眾號:碼磚雜役,ID:whatis9527want】引言筆者有十餘年的C++開發經驗,相比而言,我的C經驗只有一兩年,C比較簡單,簡單到《The C Programming Language》(C程序設計語言)只有區區的200多頁,相比上千頁的C++大部頭,不得不說真的很人性化了