Research Article

Fast Parallel Molecular Algorithms for DNA-Based Computation: Solving the Elliptic Curve Discrete Logarithm Problem over 𝐺𝐹(2𝑛)

Algorithm 5

Procedure ParallelInverse 𝑇 𝑠 .
(1) Picking ( 𝑇 0 , 𝑛 , 𝑝 , π‘Ÿ )
(2) Append ( 𝑇 0 , 𝑛 , 𝑝 , 𝑇 𝑧 ) to the end of all strands in 𝐴 ( π‘₯ )
(3) SimilarDiv 𝑇 0
(4) For ( 𝑇 0 , 𝑛 , 𝑝 , π‘Ÿ ) to 𝑗 = 0
 (4a) 𝑛 βˆ’ 1 and 𝑇 π‘š = + ( 𝑇 0 , π‘₯ 1 π‘Ÿ + 𝑛 + 1 + ( 𝑛 + 2 ) 𝑗 )
 (4b) Append 𝑇 𝑠 = βˆ’ ( 𝑇 0 , π‘₯ 1 π‘Ÿ + 𝑛 + 1 + ( 𝑛 + 2 ) 𝑗 ) and Append ( 𝑇 π‘š , π‘₯ 1 π‘Ÿ + 𝑛 + 1 + ( 𝑛 + 2 ) 𝑛 + 𝑗 )
 (4c) ( 𝑇 𝑠 , π‘₯ 0 π‘Ÿ + 𝑛 + 1 + ( 𝑛 + 2 ) 𝑛 + 𝑗 )
EndFor
(5) Picking 𝑇 0 = βˆͺ ( 𝑇 π‘š , 𝑇 𝑠 )
(6) For ( 𝑇 0 , 𝑛 βˆ’ 1 , π‘Ÿ + 𝑛 + 1 + ( 𝑛 + 2 ) ( 𝑛 βˆ’ 1 ) + 3 , 𝑇 1 ) to 𝑗 = 0
 (6a) 𝑛 βˆ’ 1 and 𝑇 π‘š = + ( 𝑇 0 , π‘₯ 1 𝑝 + 𝑗 )
 (6b) Append 𝑇 𝑠 = βˆ’ ( 𝑇 0 , π‘₯ 1 𝑝 + 𝑗 ) and Append ( 𝑇 π‘š , π‘₯ 1 π‘Ÿ + 𝑠 1 + 𝑗 )
 (6c) ( 𝑇 𝑠 , π‘₯ 0 π‘Ÿ + 𝑠 1 + 𝑗 )
EndFor
(7) SimilarDiv 𝑇 0 = βˆͺ ( 𝑇 π‘š , 𝑇 𝑠 )
(8) Append ( 𝑇 0 , 𝑛 βˆ’ 1 , π‘Ÿ + 𝑛 + 1 + ( 𝑛 + 2 ) ( 𝑛 βˆ’ 1 ) + 3 , π‘Ÿ + 𝑠 1 )
(9) For ( 𝑇 0 , π‘₯ 0 π‘Ÿ + 𝑠 1 + 𝑛 + ( 𝑛 + 1 ) ( 𝑛 βˆ’ 1 ) ) to 𝑗 = 0
 (9a) 𝑛 βˆ’ 2 and 𝑇 π‘š = + ( 𝑇 0 , π‘₯ 1 π‘Ÿ + 𝑠 1 + 𝑛 + ( 𝑛 + 1 ) 𝑗 )
 (9b) Append 𝑇 𝑠 = βˆ’ ( 𝑇 0 , π‘₯ 1 π‘Ÿ + 𝑠 1 + 𝑛 + ( 𝑛 + 1 ) 𝑗 ) and Append ( 𝑇 π‘š , π‘₯ 1 π‘Ÿ + 𝑠 1 + 𝑛 + ( 𝑛 + 1 ) ( 𝑛 βˆ’ 1 ) + 1 + 𝑗 )
 (9c) ( 𝑇 𝑠 , π‘₯ 0 π‘Ÿ + 𝑠 1 + 𝑛 + ( 𝑛 + 1 ) ( 𝑛 βˆ’ 1 ) + 1 + 𝑗 )
EndFor
(10) ParallelMultiplier 𝑇 0 = βˆͺ ( 𝑇 π‘š , 𝑇 𝑠 )
(11) ParallelShifter ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + 1 + ( 𝑛 + 2 ) 𝑛 , π‘Ÿ + 𝑠 1 + 𝑛 + ( 𝑛 + 1 ) ( 𝑛 βˆ’ 1 ) )
(12) Add 1 to the product above which will result in ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑠 1 + 𝑛 + ( 𝑛 + 1 ) ( 𝑛 βˆ’ 1 ) + 𝑛 + 𝑛 2 ) bits more to each strand
(13) Picking 𝑛
(14) For ( 𝑇 0 , 𝑛 βˆ’ 2 , π‘Ÿ + 𝑠 1 + 𝑛 + ( 𝑛 + 1 ) ( 𝑛 βˆ’ 2 ) + 3 , 𝑇 2 ) to 𝑗 = 2
 (14a) Copy dividend (divisor last time) to the end
 (14b) SimilarDiv 𝑛 βˆ’ 2
 (14c) Append ( 𝑇 0 , 𝑛 βˆ’ 𝑗 , π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑗 βˆ’ 1 + 𝑛 + 2 βˆ’ 𝑗 + ( 𝑛 + 3 βˆ’ 𝑗 ) ( 𝑛 βˆ’ 𝑗 ) + 3 , π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑗 ) bits 0 to the end
 (14d) Collect 𝑗 bits quotient of this division to the end
 (14e) Traceback 𝑛 βˆ’ 𝑗
 (14f) Picking ( 𝑇 0 , π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑗 βˆ’ 1 βˆ’ 𝑛 , π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑗 βˆ’ 𝑛 , π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑗 + ( 𝑛 + 1 βˆ’ 𝑗 ) + ( 𝑛 + 2 βˆ’ 𝑗 ) ( 𝑛 βˆ’ 𝑗 ) , 𝑛 )
EndFor
(15) For ( 𝑇 0 , 𝑛 βˆ’ 1 βˆ’ 𝑗 , π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑗 + 𝑛 + 1 βˆ’ 𝑗 + ( 𝑛 + 2 βˆ’ 𝑗 ) ( 𝑛 βˆ’ 1 βˆ’ 𝑗 ) + 3 , 𝑇 𝑗 + 1 ) to 𝑗 = 1
 (15a) For 𝑛 βˆ’ 1 to π‘˜ = 0
  (15a1) Append 𝑠 𝑗 + 1 + β‹― + 𝑠 𝑛 βˆ’ 1 βˆ’ 1
 EndFor
 (15b) For ( 𝑇 𝑗 , π‘₯ 0 π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑗 + π‘˜ ) to π‘˜ = 0
  (15b1) 𝑛 βˆ’ 1 and 𝑇 π‘š = + ( 𝑇 𝑗 , π‘₯ 1 π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑗 βˆ’ 𝑛 + π‘˜ )
  (15b2) Append 𝑇 𝑠 = βˆ’ ( 𝑇 𝑗 , π‘₯ 1 π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑗 βˆ’ 𝑛 + π‘˜ ) and Append ( 𝑇 π‘š , π‘₯ 1 π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑛 βˆ’ 1 + π‘˜ )
  (15b3) ( 𝑇 𝑠 , π‘₯ 0 π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑛 βˆ’ 1 + π‘˜ )
 EndFor
EndFor
(16) For 𝑇 𝑗 = βˆͺ ( 𝑇 π‘š , 𝑇 𝑠 ) to 𝑗 = 0
 Append 𝑠 1 + β‹― + 𝑠 𝑛 βˆ’ 1 + 𝑛 βˆ’ 2
EndFor
(17) Append ( 𝑇 𝑧 , π‘₯ 0 π‘Ÿ + 𝑗 )
(18) ( 𝑇 𝑧 , π‘₯ 1 π‘Ÿ + 𝑠 1 + β‹― + 𝑠 𝑛 βˆ’ 1 + 𝑛 βˆ’ 1 )
EndProcedure