Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. using System.Security.Cryptography;
  2. using System.Diagnostics;
  3. using System;
  4. using System.Runtime.InteropServices.WindowsRuntime;
  5.  
  6. namespace abc {
  7. public sealed class AesCtr {
  8. public static void testRun() {
  9. for (var i2 = 0; i2 < 3; i2++) {
  10. var outputV = Encrypt(new byte[32], new byte[16], new byte[30]);
  11. for (var i = 0; i < 30; i++) {
  12. Debug.WriteLine("runTest " + i.ToString() + " " + outputV[i].ToString());
  13. }
  14. }
  15. }
  16. public static byte[] Encrypt([ReadOnlyArray]byte[] psk, [ReadOnlyArray]byte[] iv, [ReadOnlyArray]byte[] inData) {
  17. var aesObj = Aes.Create();
  18. aesObj.Mode = CipherMode.ECB;
  19. aesObj.Padding = PaddingMode.None;
  20. var zeroIv = new byte[16];
  21. var Encryptor = aesObj.CreateEncryptor(psk, zeroIv);
  22. var counter = new byte[16]; // copy input iv (do not modify it)
  23. for (var i = 0; i < 16; i++) {
  24. counter[i] = iv[i];
  25. }
  26. var ctrOut = new byte[16];
  27. var output = new byte[inData.Length];
  28. var pos = 0;
  29. while (true) {
  30. if (pos >= inData.Length) {
  31. break;
  32. }
  33. Encryptor.TransformBlock(counter, 0, 16, ctrOut, 0);
  34. for (var i = 0; i < 16; i++) {
  35. if (pos >= inData.Length) {
  36. break;
  37. }
  38. output[pos] = (byte)(inData[pos] ^ ctrOut[i]);
  39. pos++;
  40. }
  41. // increment counter
  42. for (var i = 15; i >= 0; i--) {
  43. counter[i]++;
  44. if (counter[i] != 0) {
  45. break;
  46. }
  47. }
  48. }
  49. return output;
  50. }
  51. }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement