CORDIC加密算法
CORDIC加密算法是一種用于計算一些常用的基本運算函數(shù)和算術(shù)操作的循環(huán)迭代加密算法。其基本思想是用一系列與運算基數(shù)相關(guān)的角度的不斷偏擺來逼近所需旋轉(zhuǎn)的角度,從廣義上講它是一個數(shù)值型計算逼近的方法。由于這些固定的角度與計算基數(shù)有關(guān),運算只有移位和加/減。若用傳統(tǒng)的乘、除等計算方法,需要占用大量的硬件資源,甚至算法是難以實現(xiàn)的,這樣就不能滿足設(shè)計者的要求。
一、CORDIC加密算法原理
CORDIC加密算法主要用于計算三角函數(shù)、雙曲函數(shù)、指數(shù)和對運算,其基本思想是通過一系列因定的與運算基數(shù)相關(guān)的角度斷偏擺來逼近所需的旋轉(zhuǎn)焦度,使得矢量旋轉(zhuǎn)和定向運算不需三角函數(shù)查表及乘、開方、反三角函數(shù)等復雜的數(shù)學運算,原理如圖所示。
對矢量(x,y)旋轉(zhuǎn)θ角度成(x’,y’),則有

上式中,旋轉(zhuǎn)角度θ滿足tanθ=±2'時,tanθ乘法運算鍵純?yōu)楹唵蔚囊莆贿\算。通過連續(xù)進行一系列的基本角度單元旋轉(zhuǎn),可實現(xiàn)任意角度的旋轉(zhuǎn)。上式可表示為:

公式中
![]()
CORDIC加密算法一般工作在旋轉(zhuǎn)和矢量兩種模式下。旋轉(zhuǎn)式為將矢量旋轉(zhuǎn)一個給定的角度;矢量模式為將輸入矢量旋轉(zhuǎn)X軸,同時記錄下旋轉(zhuǎn)的角度。
二、CORDIC加密算法典型應用
1、arctan的計算
如果角度累加器初始化為0,反正切值θ=arctan(y/x)可使用矢量模式下的CORDIC旋轉(zhuǎn)直接得到。
2、矢量幅值的計算
在矢量模式下,CORDIC旋轉(zhuǎn)器對輸入矢量計算反正切值得到的副產(chǎn)品是矢量幅值,矢量旋轉(zhuǎn)后,矢量被調(diào)整到x軸上,其幅值正好是該矢量的x分量:
![]()
3、對數(shù)運算
根據(jù)對數(shù)和反雙曲余切函數(shù)的線性關(guān)系,以10為底的對數(shù)可以通過計算反雙曲余切函數(shù)得到:

CORDIC加密算法將輸入矢量(x,y),沿著雙曲線旋轉(zhuǎn)到(x’,0),如圖所示。

計算的結(jié)果是雙曲線角度,arctanh(y/x)。雙曲線角度代表了輸入矢量(x,y)覆蓋的對數(shù)面積。
![]()
CORDIC加密算法應用范圍相當?shù)膹V泛,譬如用于計算機制圖中求點到線的距離瀏、直角坐標與極坐標的相互變換及求多維矢量的歐幾里德范數(shù)等,可以預見,隨著VLSL技術(shù)的發(fā)展以及對速度、精度要求的越來越高,CORDIC加密算法將得到越來越廣泛的應用。
小知識之雙曲函數(shù):
在數(shù)學中,雙曲函數(shù)類似于常見的(也叫圓函數(shù)的)三角函數(shù)?;倦p曲函數(shù)是雙曲正弦“sinh”,雙曲余弦“cosh”,從它們導出雙曲正切“tanh”等。也類似于三角函數(shù)的推導。反函數(shù)是反雙曲正弦“arsinh”(也叫做“arcsinh”或“asinh”)以次類推。









