Free Support Forum - aspose.com

Aspose.Total 的license文件管理

请问我可以将LIC文件进行加密混淆处理,在调用LIC文件的时候再进行解密处理,从而达到防止其他人员盗用我的文件信息的目的吗?如果你们有什么方法可以对LIC文件进行加密混淆,可以告诉我一下吗?

@chenxf,

您可以通过使用编码解码技术来减少他人使用许可证文件的机会。 这是示例C#代码:

1)使用以下方法或您自己的方法对许可证文件进行编码。 例如,我使用最简单的方法通过XOR操作对字符串进行编码/解码。

public void Test()
{
    int key = 94;

    //Read text from file
    string input = File.ReadAllText(@"C:\Temp\Aspose.Words.lic");

    //Encode license
    string output = EncodeDecodeLicense(key, input);

    //Save encoded file
    Stream outputFile = new FileStream(@"C:\Temp\encodedLicense", FileMode.Create);
    StreamWriter writer = new StreamWriter(outputFile);
    writer.Write(output);
    writer.Close();
    outputFile.Close();
}

///
/// Method encode txt using XOR
/// 
/// Key used for encoding
/// input string
private string EncodeDecodeLicense(int key, string input)
{
    //Read original file as byte array
    char[] originalBytes = input.ToCharArray();

    //Create output string
    string outputString = string.Empty;

    //Loop through all bytes in original array and encode each byte using XOR operation
    for (int i = 0; i < originalBytes.Length; i++)
        outputString += (char)(originalBytes[i] ^ key);

    return outputString;
}

2)通过执行以下步骤,将加密的许可证作为嵌入式资源包括在内:

  • 在Visual Studio .NET中,使用“文件” |“ .lic”将.lic文件包含到项目中。 添加现有项目…菜单。
  • 在解决方案资源管理器中选择文件,然后在“属性”窗口中将“构建操作”设置为“嵌入式资源”。
  • 在您的代码中,调用SetLicense仅传递资源文件的简称。

3)在您的应用程序中,您应该阅读嵌入式资源,对其进行解码并申请许可证。

int key = 94;
System.IO.MemoryStream licStrm = new System.IO.MemoryStream();
try
{
    System.Reflection.Assembly assem = this.GetType().Assembly;
    using (System.IO.Stream stream = assem.GetManifestResourceStream("MyApp.encodedLicense"))
    {
        // read data from stream
        stream.Position = 0;
        System.IO.StreamReader reader = new System.IO.StreamReader(stream);
        string encodedLicense = reader.ReadToEnd();
        reader.Close();
        //Decode license
        string decodedLicense = EncodeDecodeLicense(key, encodedLicense);
        licStrm = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(decodedLicense));
    }
    //Set license
    Aspose.Words.License lic = new Aspose.Words.License();
    lic.SetLicense(licStrm);
}
catch { }

请注意:

  • 密钥对于编码和解码应该相同
  • 嵌入式资源名称将包含应用程序名称和嵌入式资源的文件名。

我的是 java,方便提供下java的代码示例吗?

@chenxf,

这是可在Java中使用的示例工作流程,可通过使用编码/解码技术来保护许可证文件。

1)使用以下方法对许可证文件进行编码:

int key = 94;
//Read text from file
final java.lang.String input = new java.util.Scanner
        (new java.io.File("C:\\Temp\\Aspose.Words.Java.lic")).findWithinHorizon
        (java.util.regex.Pattern.compile
                (".*", java.util.regex.Pattern.DOTALL), 0);

//Encode license
String output = EncodeDecodeLicense(key, input);

//Save encoded file
OutputStream outputFile = new FileOutputStream("C:\\Temp\\encodedLicense");
OutputStreamWriter writer = new OutputStreamWriter(outputFile);
writer.write(output);
writer.close();
outputFile.close();

private static String EncodeDecodeLicense(int key, String input) {
    //Read original file as byte array
    char[] originalBytes = input.toCharArray();
    //Create output string
    String outputString = "";

    //Loop through all bytes in original array and encode each byte using XOR operation
    for (int i = 0; i < originalBytes.length; i++) {
        outputString += (char) (originalBytes[i] ^ key);
    }

    return outputString;
}

2)然后将加密的许可证作为JAR的嵌入式资源
3)在您的应用程序中,您可以读取嵌入式资源,对其进行解码并应用许可证。