1. intellij idea查找某個欄位在哪些文件中使用了的快捷鍵
查找方法如下:
1、首先快捷鍵按 alt + 7
其它方法快捷鍵:
Shift+Shift
來查找,它可以查看其中的任意文件,即使你寫了一個功能為hello,這樣我們在java/js等等文件中都有hello,但是只要使用這個功能還是可以快速的將它從文件夾中找到。
Ctrl+F/Ctrl+Shift+F
和eclipse中的ctrl+H功能一樣,我們使用ctrl+F按鍵之後就可以在整個頁面中查找,但是若是使用Ctrl+Shift+F 就是在整個intellij idea中查找。在全局中查找時我們可以明顯看見它的查找速度是優於其他的編譯器的。
2. idea怎麼查看jar里的類調用鏈
你要有這個jar對應的sources.jar才行,我這里以google的guava.jar為例,在maven倉庫中,有:
對於沒有相應的sources.jar的jar包,則看不到,jar包對應的sources.jar一般大公司的都會一起發布在網上。
3. intellij idea8.1.2中找到實現一個類或者介面子類的快捷鍵
ctrl + B父類或父方法定義 ctrl + alt + B子類或子方法實現,下面具體說明一下:
1、在你想查看的類的標簽頁內,點擊右鍵,選擇 Diagrams,其中有 show 和 show ... Popup,只是前者新建在標簽頁內,後者以浮窗的形式展示;
2、可以自定義的,看下intellijidea幫助文件。
(3)idea快捷鍵類方法哪裡調用擴展閱讀:
IntelliJ是一款綜合的Java編程環境,被許多開發人員和行業專家譽為市場上最好的IDE。它提供了一系列最實用的工具組合:智能編碼輔助和自動控制,支持J2EE,Ant,JUnit和CVS集成,非平行的編碼檢查和創新的GUI設計器。IDEA把Java開發人員從一些耗時的常規工作中解放出來,顯著地提高了開發效率。
具有運行更快速,生成更好的代碼;持續的重新設計和日常編碼變得更加簡易,與其它工具的完美集成;很高的性價比等特點。在4.0版本中支持Generics,BEA WebLogic集成,改良的CVS集成以及GUI設計器。
參考資料:intellij idea8.1.2-網路
4. idea顯示類中有哪些方法快捷鍵
1、Alt+回車 導入包,自動修正
2、Ctrl+N查找類
3、Ctrl+Shift+N 查找文件
4、Ctrl+Alt+L格式化代碼
5、Ctrl+Alt+O 優化導入的類和包
6、Alt+Insert 生成代碼(如get,set方法,構造函數等)
7、Ctrl+E或者Alt+Shift+C最近更改的代碼
8、Ctrl+R 替換文本
9、Ctrl+F 查找文本
10、Ctrl+Shift+Space 自動補全代碼
11、Ctrl+空格 代碼提示
12、Ctrl+Alt+Space 類名或介面名提示
13、Ctrl+P 方法參數提示
14、Ctrl+Shift+Alt+N 查找類中的方法或變數
15、Alt+Shift+C 對比最近修改的代碼
5. idea怎麼快捷鍵重寫父類方法
所謂「實例化子類的對象前要先實例化父類中的內容,為父類初始化」,是指當子類正在實例化時,總是鏈式調用父類構造方法初始化父類空間。換句話說,子類的構造方法必須先調用父類的構造方法,完了才能幹別的初始化工作。如果子類沒有顯式調用語句,編譯器會隱式幫你加上。
如:
public class A{ public A() { }}public class B extends A{ public B() { }}等價於:
public class A{ public A() { super();//這里實際上是Object(); //其他初始化工作 }}public class B extends A{ public B() { super();//這里實際上是A(); //其他初始化工作 }}另外,如果有這種情況:
public class A{ X x=new X(); public A() { }}public class B extends A{ Y y=new Y(); public B() {//這是類A空間里的欄位都已經初始化完畢。 }}在成員y被賦值之前,x一定已經存在。換句話說,X x=new X();一定先於Y y=new Y();執行。
6. IDEA的 最新版的整理代碼的快捷鍵是什麼
Ctrl+Alt+L 格式化代碼
Ctrl+Shift+J 兩行合成一行,刪去不必要的空格匹配代碼格式
其他快捷鍵:
【常規】
Ctrl+Shift + Enter,語句完成
「!」,否定完成,輸入表達式時按 「!」鍵
Ctrl+E,最近的文件
Ctrl+Shift+E,最近更改的文件
Shift+Click,可以關閉文件
Ctrl+[ OR ],可以跑到大括弧的開頭與結尾
Ctrl+F12,可以顯示當前文件的結構
Ctrl+F7,可以查詢當前元素在當前文件中的引用,然後按 F3 可以選擇
Ctrl+N,可以快速打開類
Ctrl+Shift+N,可以快速打開文件
Alt+Q,可以看到當前方法的聲明
Ctrl+P,可以顯示參數信息
Ctrl+Shift+Insert,可以選擇剪貼板內容並插入
Alt+Insert,可以生成構造器/Getter/Setter等
Ctrl+Alt+V,可以引入變數。例如:new String(); 自動導入變數定義
Ctrl+Alt+T,可以把代碼包在一個塊內,例如:try/catch
Ctrl+Enter,導入包,自動修正
Ctrl+Alt+L,格式化代碼
Ctrl+Alt+I,將選中的代碼進行自動縮進編排,這個功能在編輯 JSP 文件時也可以工作
Ctrl+Alt+O,優化導入的類和包
Ctrl+R,替換文本
Ctrl+F,查找文本
Ctrl+Shift+Space,自動補全代碼
Ctrl+空格,代碼提示(與系統輸入法快捷鍵沖突)
Ctrl+Shift+Alt+N,查找類中的方法或變數
Alt+Shift+C,最近的更改
Alt+Shift+Up/Down,上/下移一行
Shift+F6,重構 – 重命名
Ctrl+X,刪除行
Ctrl+D,復制行
Ctrl+/或Ctrl+Shift+/,注釋(//或者/**/)
Ctrl+J,自動代碼(例如:serr)
Ctrl+Alt+J,用動態模板環繞
Ctrl+H,顯示類結構圖(類的繼承層次)
Ctrl+Q,顯示注釋文檔
Alt+F1,查找代碼所在位置
Alt+1,快速打開或隱藏工程面板
Ctrl+Alt+left/right,返回至上次瀏覽的位置
Alt+left/right,切換代碼視圖
Alt+Up/Down,在方法間快速移動定位
Ctrl+Shift+Up/Down,向上/下移動語句
F2 或 Shift+F2,高亮錯誤或警告快速定位
Tab,代碼標簽輸入完成後,按 Tab,生成代碼
Ctrl+Shift+F7,高亮顯示所有該文本,按 Esc 高亮消失
Alt+F3,逐個往下查找相同文本,並高亮顯示
Ctrl+Up/Down,游標中轉到第一行或最後一行下
Ctrl+B/Ctrl+Click,快速打開游標處的類或方法(跳轉到定義處)
Ctrl+Alt+B,跳轉到方法實現處
Ctrl+Shift+Backspace,跳轉到上次編輯的地方
Ctrl+O,重寫方法
Ctrl+Alt+Space,類名自動完成
Ctrl+Alt+Up/Down,快速跳轉搜索結果
Ctrl+Shift+J,整合兩行
Alt+F8,計算變數值
Ctrl+Shift+V,可以將最近使用的剪貼板內容選擇插入到文本
Ctrl+Alt+Shift+V,簡單粘貼
Shift+Esc,不僅可以把焦點移到編輯器上,而且還可以隱藏當前(或最後活動的)工具窗口
F12,把焦點從編輯器移到最近使用的工具窗口
Shift+F1,要打開編輯器游標字元處使用的類或者方法 Java 文檔的瀏覽器
Ctrl+W,可以選擇單詞繼而語句繼而行繼而函數
Ctrl+Shift+W,取消選擇游標所在詞
Alt+F7,查找整個工程中使用地某一個類、方法或者變數的位置
Ctrl+I,實現方法
Ctrl+Shift+U,大小寫轉化
Ctrl+Y,刪除當前行
Shift+Enter,向下插入新行
psvm/sout,main/System.out.println(); Ctrl+J,查看更多
Ctrl+Shift+F,全局查找
Ctrl+F,查找/Shift+F3,向上查找/F3,向下查找
Ctrl+Shift+S,高級搜索
Ctrl+U,轉到父類
Ctrl+Alt+S,打開設置對話框
Alt+Shift+Inert,開啟/關閉列選擇模式
Ctrl+Alt+Shift+S,打開當前項目/模塊屬性
Ctrl+G,定位行
Alt+Home,跳轉到導航欄
Ctrl+Enter,上插一行
Ctrl+Backspace,按單詞刪除
Ctrl+」+/-」,當前方法展開、折疊
Ctrl+Shift+」+/-」,全部展開、折疊
Alt+1,項目
Alt+2,收藏
Alt+6,TODO
Alt+7,結構
Ctrl+Shift+C,復制路徑
Ctrl+Alt+Shift+C,復制引用,必須選擇類名
Ctrl+Alt+Y,同步
Ctrl+~,快速切換方案(界面外觀、代碼風格、快捷鍵映射等菜單)
Ctrl+Tab,轉到下一個拆分器
Ctrl+Shift+Tab,轉到上一個拆分器
【重構】
Ctrl+Alt+Shift+T,彈出重構菜單
Alt+Delete,安全刪除
Ctrl+Alt+N,內聯
【查找】
Ctrl+F,查找
Ctrl+R,替換
Ctrl+Shift+F,在路徑中查找
Ctrl+Shift+R,在路徑中替換
Ctrl+Shift+S,搜索結構
Ctrl+Shift+M,替換結構
【VCS】
Alt+~,VCS 操作菜單
Ctrl+K,提交更改
Ctrl+T,更新項目
Ctrl+Alt+Shift+D,顯示變化
補充說明:
IDEA 全稱IntelliJ IDEA,是java語言開發的集成環境,IntelliJ在業界被公認為最好的java開發工具之一,尤其在智能代碼助手、代碼自動提示、重構、J2EE支持、Ant、JUnit、CVS整合、代碼審查、 創新的GUI設計等方面的功能可以說是超常的。IDEA是JetBrains公司的產品,這家公司總部位於捷克共和國的首都布拉格,開發人員以嚴謹著稱的東歐程序員為主。
7. IDEA 跳轉進入方法體內的快捷鍵 ctrl+b
Interlji IDEA中<a>
可以在頁面載入完畢後再用javascript代碼給a標簽綁定onclick事件,或者直接給href屬性賦值:
比如(這里只用一個a標簽做例子):
<a href="javascript:;" title="主頁" tabindex="1" accesskey="z">主頁</a>
<script>
window.onload=function(){
document.getElementsByTagName("a")[0].href="要跳轉的主頁網址";
}
</script>
8. idea怎麼查看方法在哪裡調用
IntelliJ IDEA中可以在主菜單中選擇Navigate | Call Hierarchy命令查看一個Java方法調用樹(caller和callee兩個方向),但是不像Eclipse那樣可以查看類成員變數的調用樹。
9. 在IntelliJ IDEA 裡面的快捷鍵
完整快捷鍵參考idea快捷鍵|人工博客
Ctrl
快捷鍵
介紹
Ctrl + F 在當前文件進行文本查找(必備)
Ctrl + R 在當前文件進行文本替換(必備)
Ctrl + Z 撤銷(必備)
Ctrl + Y 刪除游標所在行 或 刪除選中的行(必備)
Ctrl + X 剪切游標所在行 或 剪切選擇內容
Ctrl + C 復制游標所在行 或 復制選擇內容
Ctrl + D 復制游標所在行 或 復制選擇內容,並把復制內容插入游標位置下面(必備)
Ctrl + W 遞進式選擇代碼塊。可選中游標所在的單詞或段落,連續按會在原有選中的基礎上再擴展選中范圍(必備)
Ctrl + E 顯示最近打開的文件記錄列表
Ctrl + N 根據輸入的類名查找類文件
Ctrl + G 在當前文件跳轉到指定行處
Ctrl + J 插入自定義動態代碼模板
Ctrl + P 方法參數提示顯示
Ctrl + Q 游標所在的變數 / 類名 / 方法名等上面(也可以在提示補充的時候按),顯示文檔內容
Ctrl + U 前往當前游標所在的方法的父類的方法 / 介面定義
Ctrl + B 進入游標所在的方法/變數的介面或是定義出,等效於Ctrl + 左鍵單擊
Ctrl + K 版本控制提交項目,需要此項目有加入到版本控制才可用
Ctrl + T 版本控制更新項目,需要此項目有加入到版本控制才可用
Ctrl + H 顯示當前類的層次結構
Ctrl + O 選擇可重寫的方法
Ctrl + I 選擇可繼承的方法
Ctrl + + 展開代碼
Ctrl + - 折疊代碼
Ctrl + / 注釋游標所在行代碼,會根據當前不同文件類型使用不同的注釋符號(必備)
Ctrl + [ 移動游標到當前所在代碼的花括弧開始位置
Ctrl + ] 移動游標到當前所在代碼的花括弧結束位置
Ctrl + F1 在游標所在的錯誤代碼出顯示錯誤信息
Ctrl + F3 調轉到所選中的詞的下一個引用位置
Ctrl + F4 關閉當前編輯文件
Ctrl + F8 在 Debug 模式下,設置游標當前行為斷點,如果當前已經是斷點則去掉斷點
Ctrl + F9 執行 Make Project 操作
Ctrl + F11 選中文件 / 文件夾,使用助記符設定 / 取消書簽
Ctrl + F12 彈出當前文件結構層,可以在彈出的層上直接輸入,進行篩選
Ctrl + Tab 編輯窗口切換,如果在切換的過程又加按上delete,則是關閉對應選中的窗口
Ctrl + Enter 智能分隔行
Ctrl + End 跳到文件尾
Ctrl + Home 跳到文件頭
Ctrl + Space 基礎代碼補全,默認在 Windows 系統上被輸入法佔用,需要進行修改,建議修改為Ctrl + 逗號(必備)
Ctrl + Delete 刪除游標後面的單詞或是中文句
Ctrl + BackSpace 刪除游標前面的單詞或是中文句
Ctrl + 1,2,3...9 定位到對應數值的書簽位置
Ctrl + 左鍵單擊 在打開的文件標題上,彈出該文件路徑
Ctrl + 游標定位 按 Ctrl 不要松開,會顯示游標所在的類信息摘要
Ctrl + 左方向鍵 游標跳轉到當前單詞 / 中文句的左側開頭位置
Ctrl + 右方向鍵 游標跳轉到當前單詞 / 中文句的右側開頭位置
Ctrl + 前方向鍵 等效於滑鼠滾輪向前效果
Ctrl + 後方向鍵 等效於滑鼠滾輪向後效果
Alt
快捷鍵
介紹
Alt + ` 顯示版本控制常用操作菜單彈出層
Alt + Q 彈出一個提示,顯示當前類的聲明 / 上下文信息
Alt + F1 顯示當前文件選擇目標彈出層,彈出層中有很多目標可以進行選擇
Alt + F2 對於前面頁面,顯示各類瀏覽器打開目標選擇彈出層
Alt + F3 選中文本,逐個往下查找相同文本,並高亮顯示
Alt + F7 查找游標所在的方法 / 變數 / 類被調用的地方
Alt + F8 在 Debug 的狀態下,選中對象,彈出可輸入計算表達式調試框,查看該輸入內容的調試結果
Alt + Home 定位 / 顯示到當前文件的Navigation Bar
Alt + Enter IntelliJ IDEA 根據游標所在問題,提供快速修復選擇,游標放在的位置不同提示的結果也不同(必備)
Alt + Insert 代碼自動生成,如生成對象的 set / get 方法,構造函數,toString() 等
Alt + 左方向鍵 按左方向切換當前已打開的文件視圖
Alt + 右方向鍵 按右方向切換當前已打開的文件視圖
Alt + 前方向鍵 當前游標跳轉到當前文件的前一個方法名位置
Alt + 後方向鍵 當前游標跳轉到當前文件的後一個方法名位置
Alt + 1,2,3...9 顯示對應數值的選項卡,其中 1 是 Project 用得最多
Shift
快捷鍵
介紹
Shift + F1 如果有外部文檔可以連接外部文檔
Shift + F2 跳轉到上一個高亮錯誤 或 警告位置
Shift + F3 在查找模式下,查找匹配上一個
Shift + F4 對當前打開的文件,使用新Windows窗口打開,舊窗口保留
Shift + F6 對文件 / 文件夾 重命名
Shift + F7 在 Debug 模式下,智能步入。斷點所在行上有多個方法調用,會彈出進入哪個方法
Shift + F8 在 Debug 模式下,跳出,表現出來的效果跟F9一樣
Shift + F9 等效於點擊工具欄的Debug按鈕
Shift + F10 等效於點擊工具欄的Run按鈕
Shift + F11 彈出書簽顯示層
Shift + Tab 取消縮進
Shift + ESC 隱藏當前 或 最後一個激活的工具窗口
Shift + End 選中游標到當前行尾位置
Shift + Home 選中游標到當前行頭位置
Shift + Enter 開始新一行。游標所在行下空出一行,游標定位到新行位置
Shift + 左鍵單擊 在打開的文件名上按此快捷鍵,可以關閉當前打開文件
Shift + 滾輪前後滾動 當前文件的橫向滾動軸滾動
Ctrl + Alt
快捷鍵
介紹
Ctrl + Alt + L 格式化代碼,可以對當前文件和整個包目錄使用(必備)
Ctrl + Alt + O 優化導入的類,可以對當前文件和整個包目錄使用(必備)
Ctrl + Alt + I 游標所在行 或 選中部分進行自動代碼縮進,有點類似格式化
Ctrl + Alt + T 對選中的代碼彈出環繞選項彈出層
Ctrl + Alt + J 彈出模板選擇窗口,講選定的代碼加入動態模板中
Ctrl + Alt + H 調用層次
Ctrl + Alt + B 在某個調用的方法名上使用會跳到具體的實現處,可以跳過介面
Ctrl + Alt + V 快速引進變數
Ctrl + Alt + Y 同步、刷新
Ctrl + Alt + S 打開 IntelliJ IDEA 系統設置
Ctrl + Alt + F7 顯示使用的地方。尋找被該類或是變數被調用的地方,用彈出框的方式找出來
Ctrl + Alt + F11 切換全屏模式
Ctrl + Alt + Enter 游標所在行上空出一行,游標定位到新行
Ctrl + Alt + Home 彈出跟當前文件有關聯的文件彈出層
Ctrl + Alt + Space 類名自動完成
Ctrl + Alt + 左方向鍵 退回到上一個操作的地方(必備)**(注意與其他軟體快捷鍵沖突)**
Ctrl + Alt + 右方向鍵 前進到上一個操作的地方(必備)**(注意與其他軟體快捷鍵沖突)**
Ctrl + Alt + 前方向鍵 在查找模式下,跳到上個查找的文件
Ctrl + Alt + 後方向鍵 在查找模式下,跳到下個查找的文件
Ctrl + Shift
快捷鍵
介紹
Ctrl + Shift + F 根據輸入內容查找整個項目 或 指定目錄內文件(必備)
Ctrl + Shift + R 根據輸入內容替換對應內容,范圍為整個項目 或 指定目錄內文件(必備)
Ctrl + Shift + J 自動將下一行合並到當前行末尾(必備)
Ctrl + Shift + Z 取消撤銷(必備)
Ctrl + Shift + W 遞進式取消選擇代碼塊。可選中游標所在的單詞或段落,連續按會在原有選中的基礎上再擴展取消選中范圍(必備)
Ctrl + Shift + N 通過文件名定位 / 打開文件 / 目錄,打開目錄需要在輸入的內容後面多加一個正斜杠(必備)
Ctrl + Shift + U 對選中的代碼進行大 / 小寫輪流轉換(必備)
Ctrl + Shift + T 對當前類生成單元測試類,如果已經存在的單元測試類則可以進行選擇
Ctrl + Shift + C 復制當前文件磁碟路徑到剪貼板
Ctrl + Shift + V 彈出緩存的最近拷貝的內容管理器彈出層
Ctrl + Shift + E 顯示最近修改的文件列表的彈出層
Ctrl + Shift + H 顯示方法層次結構
Ctrl + Shift + B 跳轉到類型聲明處
Ctrl + Shift + I 快速查看游標所在的方法 或 類的定義
Ctrl + Shift + A 查找動作 / 設置
Ctrl + Shift + / 代碼塊注釋(必備)
Ctrl + Shift + [ 選中從游標所在位置到它的頂部中括弧位置
Ctrl + Shift + ] 選中從游標所在位置到它的底部中括弧位置
Ctrl + Shift + + 展開所有代碼
Ctrl + Shift + - 折疊所有代碼
Ctrl + Shift + F7 高亮顯示所有該選中文本,按Esc高亮消失
Ctrl + Shift + F8 在 Debug 模式下,指定斷點進入條件
Ctrl + Shift + F9 編譯選中的文件 / 包 / Mole
Ctrl + Shift + F12 編輯器最大化
Ctrl + Shift + Space 智能代碼提示
Ctrl + Shift + Enter 自動結束代碼,行末自動添加分號(必備)
Ctrl + Shift + Backspace 退回到上次修改的地方
Ctrl + Shift + 1,2,3...9 快速添加指定數值的書簽
Ctrl + Shift + 左方向鍵 在代碼文件上,游標跳轉到當前單詞 / 中文句的左側開頭位置,同時選中該單詞 / 中文句
Ctrl + Shift + 右方向鍵 在代碼文件上,游標跳轉到當前單詞 / 中文句的右側開頭位置,同時選中該單詞 / 中文句
Ctrl + Shift + 左方向鍵 在游標焦點是在工具選項卡上,縮小選項卡區域
Ctrl + Shift + 右方向鍵 在游標焦點是在工具選項卡上,擴大選項卡區域
Ctrl + Shift + 前方向鍵 游標放在方法名上,將方法移動到上一個方法前面,調整方法排序
Ctrl + Shift + 後方向鍵 游標放在方法名上,將方法移動到下一個方法前面,調整方法排序
Alt + Shift
快捷鍵
介紹
Alt + Shift + N 選擇 / 添加 task
Alt + Shift + F 顯示添加到收藏夾彈出層
Alt + Shift + C 查看最近操作項目的變化情況列表
Alt + Shift + F 添加到收藏夾
Alt + Shift + I 查看項目當前文件
Alt + Shift + F7 在 Debug 模式下,下一步,進入當前方法體內,如果方法體還有方法,則會進入該內嵌的方法中,依此循環進入
Alt + Shift + F9 彈出Debug的可選擇菜單
Alt + Shift + F10 彈出Run的可選擇菜單
Alt + Shift + 左鍵雙擊 選擇被雙擊的單詞 / 中文句,按住不放,可以同時選擇其他單詞 / 中文句
Alt + Shift + 前方向鍵 移動游標所在行向上移動
Alt + Shift + 後方向鍵 移動游標所在行向下移動
Ctrl + Shift + Alt
快捷鍵
介紹
Ctrl + Shift + Alt + V 無格式黏貼
Ctrl + Shift + Alt + N 前往指定的變數 / 方法
Ctrl + Shift + Alt + S 打開當前項目設置
Ctrl + Shift + Alt + C 復制參考信息
其他
快捷鍵
介紹
F2 跳轉到下一個高亮錯誤 或 警告位置(必備)
F3 在查找模式下,定位到下一個匹配處
F4 編輯源
F7 在 Debug 模式下,進入下一步,如果當前行斷點是一個方法,則進入當前方法體內,如果該方法體還有方法,則不會進入該內嵌的方法中
F8 在 Debug 模式下,進入下一步,如果當前行斷點是一個方法,則不進入當前方法體內
F9 在 Debug 模式下,恢復程序運行,但是如果該斷點下面代碼還有斷點則停在下一個斷點上
F11 添加書簽
F12 回到前一個工具窗口
Tab 縮進
ESC 從工具窗口進入代碼文件窗口
連按兩次Shift 彈出Search Everywhere彈出層
10. idea 如何查看方法被調用
idea全稱IntelliJ IDEA,是java語言開發的集成環境,是JetBrains公司的產品。 idea提倡的是智能編碼,目的是減少程序員的工作,其特色功能有智能的選取、豐富的導航模式、歷史記錄功能等,最突出的功能是調試(Debug),可以對Java代碼、JavaScript、JQuery等技術進行調試。
加密演算法
是旅居瑞士中國青年學者來學嘉和著名密碼專家J.Massey於1990年提出的。它在1990年正式公布並在以後得到增強。這種演算法是在DES演算法的基礎上發展出來的,類似於三重DES,和DES一樣IDEA也是屬於對稱密鑰演算法。發展IDEA也是因為感到DES具有密鑰太短等缺點,已經過時。IDEA的密鑰為128位,這么長的密鑰在今後若干年內應該是安全的。
類似於DES,IDEA演算法也是一種數據塊加密演算法,它設計了一系列加密輪次,每輪加密都使用從完整的加密密鑰中生成的一個子密鑰。與DES的不同處在於,它採用軟體實現和採用硬體實現同樣快速。
由於IDEA是在美國之外提出並發展起來的,避開了美國法律上對加密技術的諸多限制,因此,有關IDEA演算法和實現技術的書籍都可以自由出版和交流,可極大地促進IDEA的發展和完善。
IDEA曾今也是AES演算法標準的主要競爭者,其安全性已經在國際密碼年會上被證明。
在PGP(pretty good privacy)中,IDEA演算法被採用。
64-位數據分組被分成4個16-位子分組:xl,X2,x3,x4。這4個子分組成為演算法的第一輪的輸入,總共有8輪。在每一輪中,這4個子分組相列相異或,相加,相乘,且與6個16-位子密鑰相異或,相加,相乘。在輪與輪間,第二和第:個子分組交換。最後在輸出變換中4個子分組與4個子密鑰進行運算。
在每一輪中,執行的順序如下:(以下表述中的相加指的是兩個數mod 2^256 相加,例如:(a + b) mod p,其結果是a+b算術和除以p的余數,也就是說,(a+b) = kp +r,則 (a+b) mod p =r,又例如對於下列表述中的「(2)X2和第二個子密鑰相加」就是指用X2與第二個子密鑰的和除以2^16(即65536)後的余數。對於以下表述中的相乘,指的是:(a × b) mod p,其結果是 a × b算術乘法除以p的余數,又例如對於下列表述中的「(1)X1和第一個子密鑰相乘。」就是指用X1和第一個子密鑰相乘後的積除於(2^16+1)(即65537)後的余數。異或指的是不進位加法。)
(1)X1和第一個子密鑰相乘。
(2)X2和第二個子密鑰相加。
(3)X3和第三個子密鑰相加。
(4)X4和第四個子密鑰相乘。
(5)將第(1)步和第(3)步的結果相異或。·
(6)將第(2)步和第(4)步的結果相異或。
(7)將第(5)步的結果與第五個子密鑰相乘。
(8)將第(6)步和第(7)步的結果相加。
(9)將第(8)步的結果與第六個子密鑰相乘。
(10)將第(7)步和第(9)步的結果相加。
(11)將第(1)步和第(9)步的結果相異或。
(12)將第(3)步和第(9)步的結果相異或。
(13)將第(2)步和第(10)步的結果相異或。
(14)將第(4)步和第(10)步的結果相異或。
每一輪的輸出是第(11)、(12)、(13)和(14) 步的結果形成的4個子分組。將中間兩個分組分組交換(最後一輪除外)後,即為下一輪的輸入。
經過8輪運算之後,有一個最終的輸出變換:
(1) X1和第一個子密鑰相乘。
(2) X2和第二個子密鑰相加。
(3) X3和第三個子密鑰相加。
(4) X4和第四個子密鑰相乘。
最後,這4個子分組重新連接到一起產生密文。
產生子密鑰也很容易。這個演算法用了52個子密鑰(8輪中的每一輪需要6個,其他4個用與輸出變換)。首先,將128-位密鑰分成8個16-位子密鑰。這些是演算法的第一批8個子密鑰(第一輪六個,第二輪的頭兩個)。然後,密鑰向左環移25位後再分成8個子密鑰。開始4個用在第二輪,後面4個用在第三輪。密鑰再次向左環移25位產生另外8個子密鑰,如此進行D演算法結束。
解密過程基本上一樣,只是子密鑰需要求逆且有些微小差別,解密子密鑰要麼是加密子密鑰的加法逆要麼是乘法逆。(對IDEA而言,對於模256十1乘,全0子分組用256=-l來表示,因此0的乘法逆是0)。計運算元密鑰要花點時間,但對每一個解密密鑰,只需做一次。
關於IDEA中運用的很多概念,需要參考數論中的知識,如有疑問,可以參考以下資料:計算機密碼學(盧開澄著清華大學出版社出版),計算機密碼學及其應用,初等數論,數論導引(華羅庚著)等。關於IDEA運用的數學原理,均可在以上資料中獲得答案。