internal static string Encrypt()

in sdk/PowerBI.Api/Extensions/Asymmetric1024KeyEncryptionHelper.cs [13:48]


        internal static string Encrypt(byte[] plainTextBytes, byte[] modulusBytes, byte[] exponentBytes)
        {
            // Split the message into different segments, each segment's length is 85. So the result may be 85,85,85,20.
            var hasIncompleteSegment = plainTextBytes.Length % SegmentLength != 0;

            var segmentNumber = (!hasIncompleteSegment) ? (plainTextBytes.Length / SegmentLength) : ((plainTextBytes.Length / SegmentLength) + 1);

            var encryptedBytes = new byte[segmentNumber * EncryptedLength];

            for (var i = 0; i < segmentNumber; i++)
            {
                int lengthToCopy;

                if (i == segmentNumber - 1 && hasIncompleteSegment)
                {
                    lengthToCopy = plainTextBytes.Length % SegmentLength;
                }
                else
                {
                    lengthToCopy = SegmentLength;
                }

                var segment = new byte[lengthToCopy];

                Array.Copy(plainTextBytes, i * SegmentLength, segment, 0, lengthToCopy);

                var segmentEncryptedResult = EncryptSegment(modulusBytes, exponentBytes, segment);

                for (var j = 0; j < segmentEncryptedResult.Length; j++)
                {
                    encryptedBytes[(i * EncryptedLength) + j] = segmentEncryptedResult[j];
                }
            }

            return Convert.ToBase64String(encryptedBytes);
        }