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);
}