This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LP-AM243:关于样本源 sa2ul_sha

Guru**** 1791630 points
Other Parts Discussed in Thread: LP-AM243
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1397491/lp-am243-about-the-sample-source-sa2ul_sha

器件型号:LP-AM243

工具与软件:

サンプル フォルダーの"examples\security\crypto\sa2ul_sha"の"abcdefpra"および SHA2-512 ハッシュ値を出力します。SHA2-256 は
この文字列を別の文字列に置き換えると、結果は'abcdefpra'と同じハッシュ値になります。

ハッシュ値は置換された文字列のハッシュ値になると思います。μ A

しかし、なぜ置換前と同じハッシュ値なのでしょうか μ A?


使用したソースファイルを共有します。μ A

e2e.ti.com/.../crypto_5F00_sha.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yukinobu:

    我们很乐意提供帮助。 请您用英语重新发布该主题吗? 我将很快删除该主题。

    此致、

    Qutaiba

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Qutaiba:

    抱歉。 我犯了个错误。
    在示例文件夹中、"examples\security\crypto\crypto\sa2ul_sha"会输出"abcdefpra"的 SHA2-512和 SHA2-256哈希值。
    如果我将此字符串替换为另一个字符串、结果将与"abcdefpra"相同。

    我希望哈希值是我替换它的字符串的哈希值、但为什么它与我替换它之前的哈希值相同?

    我要使用的器件是 LP-AM243 HS-SE、是否与之有任何关系?
    我将共享我使用的源文件。

    e2e.ti.com/.../8875.crypto_5F00_sha.c

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    输入缓冲器(gCryptoShaTestInputBuf)映射到缓存存储器区域。 因此、对它的任何修改之后必须至少有 Cache Writback (高速缓存回写)、以确保使用高速缓存中可用的最新数据更新原始缓冲区。

    在修改后的"crypto_sha.c"文件顶部进行更改后、应该会得到预期的结果。

    diff --git a/examples/security/crypto/sa2ul_sha/crypto_sha.c b/examples/security/crypto/sa2ul_sha/crypto_sha.c
    index fb6cdc5..d174ea4 100644
    --- a/examples/security/crypto/sa2ul_sha/crypto_sha.c
    +++ b/examples/security/crypto/sa2ul_sha/crypto_sha.c
    @@ -117,6 +117,7 @@ void crypto_sha(void *args)
     //        loop_forever();
             DebugP_log("[DEBUG][Now]gCryptoShaTestInputBuf=[%s]\r\n",gCryptoShaTestInputBuf);
             memset(gCryptoShaTestInputBuf,0x30,APP_SHA_IN_OUT_BUF_LENGTH);
    +        CacheP_wb(gCryptoShaTestInputBuf, APP_SHA_IN_OUT_BUF_LENGTH, CacheP_TYPE_ALL);
             DebugP_log("[DEBUG][New]gCryptoShaTestInputBuf=[%s]\r\n",gCryptoShaTestInputBuf);
         //debug
     
    

    以下是日志:

    [CRYPTO] SHA example started ...
    [DEBUG][Now]gCryptoShaTestInputBuf=[abcdefpra]
    [DEBUG][New]gCryptoShaTestInputBuf=[000000000]
    [CRYPTO] SHA-512 example failed!!
    [CRYPTO] SHA-256 example failed!!

    此致、

    Prashant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     Prashant、您好!

    非常感谢。 结果符合预期。

    输入缓冲区(gCryptoShaTestInputBuf)映射到缓存存储器区域。

    您提到它映射到缓存的存储器空间、
    您如何映射到高速缓存区域?
    我想更改要缓存的存储器空间、
    请告诉我如何操作。

    此致、
    Yukinobu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yukinobu:

    /*用于 SHA 计算的 INOUT 测试缓冲区*/
    静态 uint8_t gCryptoShaTestInputBuf[APP_SHA_IN_OUT_BUF_LENGTH]={"abcdefpra"};

    这是`cryptoSHA.c`源文件中` gCryptoShaTestInputBuf `的定义。 该数组是一个已初始化的全局数组、这意味着它被分配到`.data`段。 在链接器配置中、此`.data`段随后将分配给单个 MSRAM 存储器区域、并在 MPU 配置中作为缓存进行检查。

    您可以 通过以下步骤使`gCryptoShaTestInputBuf`数组处于非缓存状态:

    • 创建一个新的存储器区域、比方说 MSRAM_1。
    • 创建一个新段、假设是.data.sha_buffer 将其分配给 MSRAM1。
    •  使用__ attribute __((section (".data.SHA_buffer"))将 gCryptoShaTestInputBuf 分配到.data.SHA_buffer。

    一旦分配到非缓存区域、就不需要手动缓存操作(如回写)。

    此致、

    Prashant