Question: ELgamal procedure

Hi I was wondering if anyone can help me with the following procedure, i am trying to write a procedure that can encrypt/decrypt messages encrypted using the method of ELGamal my current procedure runs but it takes too long to compute, and it can only decrypt.
 

 


My procedure is as follows:

   


my procedure for part c is as follows it seems to run but it takes a long time to carry out the procedure when i try to decrypt.


               Elgamal := proc (ciphy, hkt, p, a, b)
               local i, icdarray, s, q;
                 icdarray := Array(5 .. 388);
                   for i from 5 to 388 do 
                   s := ciphy[i];
                   q := `mod`(1/hkt^proc3(a, b, p), p);
                   icdarray[i] := s*q;
                   end do;
                   return convert(icdarray, bytes);
                  end proc;

where proc3 is as follows

                      proc3 := proc (alpha, beta, p)
                   local k, R, i, j, N, A, t;
               Description "baby step giant step procedure";
                 N := floor(sqrt(p-1))+1;
                 A := Array(0 .. N);
                 for j from 0 to N do
                 A[j] := `mod`(alpha&^j, p);
                end do;
          for i from 0 to N do
             t := `mod`(beta*alpha&^(-N*i), p);
            for k from 0 to N do
            if t = A[k]
           then return k+N*i;
         end if; 
         end do; 
           end do; 
         end proc;

                      header := 9681348997

ciphertext: 
[12432485341, 2579085006, 13736574369, 4105371047, 9573017222, 

  7824534168, 10017411248, 13292180343, 2356887993, 9573017222, 

  10017411248, 13765667419, 9795214235, 10017411248, 2801282019, 

  608404939, 4105371047, 13765667419, 11572790339, 13765667419, 

  11765894302, 10017411248, 13765667419, 4549765073, 10017411248, 

  13736574369, 2579085006, 4549765073, 10017411248, 4549765073, 

  13765667419, 2801282019, 830601952, 4105371047, 10017411248, 

  7824534168, 13765667419, 13736574369, 2801282019, 7824534168, 

  10017411248, 830601952, 9573017222, 4327568060, 13765667419, 

  6076051114, 8268928194, 13292180343, 10017411248, 7824534168, 

  386207926, 2801282019, 4105371047, 2579085006, 6076051114, 

  608404939, 13765667419, 6076051114, 830601952, 13765667419, 

  4105371047, 11765894302, 10017411248, 13765667419, 13292180343, 

  13736574369, 10017411248, 608404939, 10017411248, 7824534168, 

  2134690980, 13765667419, 4105371047, 11765894302, 2801282019, 

  4105371047, 13765667419, 2579085006, 608404939, 13292180343, 

  11543697289, 2579085006, 7824534168, 10017411248, 4549765073, 

  13765667419, 4994159099, 5853854101, 6076051114, 830601952, 

  4327568060, 6076051114, 5853854101, 10017411248, 7824534168, 

  13765667419, 4105371047, 6076051114, 13765667419, 9573017222, 

  13292180343, 10017411248, 13765667419, 4105371047, 11765894302, 

  10017411248, 13765667419, 5853854101, 6076051114, 7824534168, 

  4549765073, 13765667419, 11572790339, 13765667419, 4105371047, 

  11765894302, 2801282019, 4105371047, 13765667419, 4105371047, 

  11765894302, 10017411248, 13765667419, 4327568060, 2801282019, 

  608404939, 4549765073, 13292180343, 13736574369, 2801282019, 

  11543697289, 10017411248, 13765667419, 5853854101, 2801282019, 

  13292180343, 13765667419, 11765894302, 6076051114, 7824534168, 

  7824534168, 2579085006, 8268928194, 4327568060, 2134690980, 

  13765667419, 11543697289, 7824534168, 10017411248, 13736574369, 

  2579085006, 11543697289, 2579085006, 4105371047, 6076051114, 

  9573017222, 13292180343, 2385981043, 13765667419, 3245676045, 

  9573017222, 2801282019, 2579085006, 608404939, 4105371047, 

  6105144164, 13765667419, 5853854101, 11765894302, 10017411248, 

  608404939, 13765667419, 9573017222, 13292180343, 10017411248, 

  4549765073, 13765667419, 4105371047, 6076051114, 13765667419, 

  4549765073, 10017411248, 13292180343, 13736574369, 7824534168, 

  2579085006, 8268928194, 10017411248, 13765667419, 4105371047, 

  11765894302, 10017411248, 13765667419, 6076051114, 13736574369, 

  13736574369, 2801282019, 13292180343, 2579085006, 6076051114, 

  608404939, 2801282019, 4327568060, 13765667419, 386207926, 

  2579085006, 4327568060, 4327568060, 2801282019, 6298248127, 

  10017411248, 13765667419, 4105371047, 11765894302, 7824534168, 

  6076051114, 9573017222, 6298248127, 11765894302, 13765667419, 

  5853854101, 11765894302, 2579085006, 13736574369, 11765894302, 

  13765667419, 4105371047, 11765894302, 10017411248, 2134690980, 

  13765667419, 11543697289, 2801282019, 13292180343, 13292180343, 

  10017411248, 4549765073, 6105144164, 13765667419, 9795214235, 

  10017411248, 2801282019, 608404939, 4105371047, 13765667419, 

  830601952, 10017411248, 386207926, 10017411248, 7824534168, 

  11572790339, 7824534168, 2579085006, 4549765073, 4549765073, 

  10017411248, 608404939, 13765667419, 2801282019, 608404939, 

  4549765073, 13765667419, 4105371047, 9573017222, 9795214235, 

  8268928194, 4327568060, 10017411248, 4549765073, 6076051114, 

  5853854101, 608404939, 2385981043, 13765667419, 4994159099, 

  5853854101, 6076051114, 830601952, 4327568060, 6076051114, 

  5853854101, 10017411248, 7824534168, 13765667419, 5853854101, 

  2801282019, 13292180343, 13765667419, 2801282019, 13765667419, 

  4105371047, 6076051114, 9573017222, 7824534168, 2579085006, 

  13292180343, 4105371047, 6105144164, 13765667419, 4105371047, 

  11765894302, 10017411248, 13765667419, 830601952, 2579085006, 

  7824534168, 13292180343, 4105371047, 13765667419, 10017411248, 

  386207926, 10017411248, 7824534168, 13765667419, 13292180343, 

  10017411248, 10017411248, 608404939, 13765667419, 6076051114, 

  608404939, 13765667419, 4105371047, 11765894302, 10017411248, 

  13765667419, 5438553125, 2579085006, 13292180343, 13736574369, 

  5853854101, 6076051114, 7824534168, 4327568060, 4549765073, 

  2385981043, 13765667419, 4994159099, 6076051114, 9573017222, 

  7824534168, 2579085006, 13292180343, 4105371047, 6105144164, 

  13765667419, 8713322220, 2579085006, 608404939, 13736574369, 

  10017411248, 5853854101, 2579085006, 608404939, 4549765073, 

  13765667419, 11765894302, 2801282019, 4549765073, 13765667419, 

  4549765073, 10017411248, 13736574369, 2579085006, 4549765073, 

  10017411248, 4549765073, 6105144164, 13765667419, 9795214235, 

  10017411248, 2801282019, 608404939, 4105371047, 13765667419, 

  8075824231, 2579085006, 4549765073, 2579085006, 6076051114, 

  4105371047, 8075824231, 2385981043]


  [1]: https://i.stack.imgur.com/xY3zd.png
  [2]: https://i.stack.imgur.com/0eYFM.png
  [3]: https://i.stack.imgur.com/PMk7s.png

Please Wait...