mirror of
https://github.com/opensim/opensim.git
synced 2026-08-01 06:06:06 +08:00
Basic implementation of AES encryption/decryption and respective OSSL functions
Add methods:
+ private static string AESEncryptString(string secret, string plainText, string ivString= null)
AES Encrypt a string using a password and a random or custom Initialization Vector.
+ private static string AESDecryptString(string secret, string encryptedText, string ivString= null)
AES Decrypt the string encrypted by AESEncryptString with the same password and ivString used in the encryption.
Methods implementations:
+ Util.AESEncrypt(string secret, string plainText)
+ Util.AESDecrypt(string secret, string encryptedText)
+Util.AESEncryptTo(string secret, string plainText, string ivString)
+ Util.AESDecryptFrom(string secret, string encryptedText, string ivString)
OSSL functions as first case of use:
+ osAESEncrypt(string secret, string plainText)
+ osAESDecrypt(string secret, string encryptedText)
+ osAESEncryptTo(string secret, string plainText, string ivString)
+ osAESDecryptFrom(string secret, string encryptedText, string ivString)
LSL script example:
<pre><code>
string plainText = "Hello World :)";
string secret = "#!qUeRtY$@123^456€!#";
default
{
touch_start(integer i)
{
string encryptedText = osAESEncrypt(secret, plainText);
llOwnerSay("\nEncrypted with osAESEncrypt:\n"+ encryptedText);
string decryptedText = osAESDecrypt(secret, encryptedText);
llOwnerSay("\nDecrypted with osAESDecrypt:\n"+ decryptedText);
// Encription / Decription with custom Initialization Vector.
string ivString = (string)llGetOwner() /* +"_"+ llGenerateKey() */;
string encryptedToText = osAESEncryptTo(secret, plainText, ivString);
llOwnerSay("\nEncrypted with osAESEncryptTo:\n"+ encryptedToText);
string decryptedFromText = osAESDecryptFrom(secret, encryptedToText, ivString);
llOwnerSay("\nDecrypted with osAESDecryptFrom:\n"+ decryptedFromText);
}
}
</code></pre>
Web Rain :)
This commit is contained in:
@@ -6374,5 +6374,65 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
|
||||
return World.TryGetSceneObjectPart(id, out SceneObjectPart part) ? part.ParentGroup.GetSittingAvatarsCount() : 0;
|
||||
}
|
||||
|
||||
public LSL_String osAESEncrypt(string secret, string plainText)
|
||||
{
|
||||
if(string.IsNullOrEmpty(secret) || string.IsNullOrEmpty(plainText))
|
||||
return LSL_String.Empty;
|
||||
|
||||
LSL_String ret = Util.AESEncrypt(secret, plainText);
|
||||
if(string.IsNullOrEmpty(ret)){
|
||||
OSSLError("osAESEncrypt: Failed to encrypt!");
|
||||
return LSL_String.Empty;
|
||||
}else
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
public LSL_String osAESDecrypt(string secret, string encryptedText)
|
||||
{
|
||||
if(string.IsNullOrEmpty(secret) || string.IsNullOrEmpty(encryptedText))
|
||||
return LSL_String.Empty;
|
||||
|
||||
LSL_String ret = Util.AESDecrypt(secret, encryptedText);
|
||||
if(string.IsNullOrEmpty(ret)){
|
||||
OSSLError("osAESDecrypt: Failed to Decrypt!");
|
||||
return LSL_String.Empty;
|
||||
}else
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
public LSL_String osAESEncryptTo(string secret, string plainText, string ivString)
|
||||
{
|
||||
if(string.IsNullOrEmpty(secret) || string.IsNullOrEmpty(plainText) || string.IsNullOrEmpty(ivString))
|
||||
return LSL_String.Empty;
|
||||
|
||||
LSL_String ret = Util.AESEncryptTo(secret, plainText, ivString);
|
||||
if(string.IsNullOrEmpty(ret)){
|
||||
OSSLError("osAESEncryptTo: Failed to encrypt!");
|
||||
return LSL_String.Empty;
|
||||
}else
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
public LSL_String osAESDecryptFrom(string secret, string encryptedText, string ivString)
|
||||
{
|
||||
if(string.IsNullOrEmpty(secret) || string.IsNullOrEmpty(encryptedText) || string.IsNullOrEmpty(ivString))
|
||||
return LSL_String.Empty;
|
||||
|
||||
LSL_String ret = Util.AESDecryptFrom(secret, encryptedText, ivString);
|
||||
if(string.IsNullOrEmpty(ret)){
|
||||
OSSLError("osAESDecryptFrom: Failed to decrypt!");
|
||||
return LSL_String.Empty;
|
||||
}else
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user