<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dapr 文档库</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/cryptography/</link><description>Recent content on Dapr 文档库</description><generator>Hugo</generator><language>zh-hans</language><atom:link href="https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/cryptography/index.xml" rel="self" type="application/rss+xml"/><item><title>加密概述</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/cryptography/cryptography-overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/cryptography/cryptography-overview/</guid><description>&lt;p>使用加密构建块，您可以安全且一致地利用加密技术。Dapr 提供的 API 允许您在密钥库或 Dapr sidecar 中执行加密和解密操作，而无需将加密密钥暴露给您的应用程序。&lt;/p>
&lt;h2 id="为什么需要加密">为什么需要加密？&lt;/h2>
&lt;p>加密技术在应用程序中被广泛使用，正确实施可以在数据泄露时提高安全性。在某些情况下，您可能需要使用加密技术以符合行业法规（如金融领域）或法律要求（如 GDPR 等隐私法规）。&lt;/p>
&lt;p>然而，正确使用加密技术可能很复杂。您需要：&lt;/p>
&lt;ul>
&lt;li>选择合适的算法和选项&lt;/li>
&lt;li>学习正确的密钥管理和保护方法&lt;/li>
&lt;li>在希望限制对加密密钥材料的访问时，处理操作复杂性&lt;/li>
&lt;/ul>
&lt;p>安全的一个重要要求是限制对加密密钥的访问，这通常被称为“原始密钥材料”。Dapr 可以与密钥库集成，如 Azure Key Vault（未来将支持更多组件），这些密钥库将密钥存储在安全的环境中，并在库中执行加密操作，而不将密钥暴露给您的应用程序或 Dapr。&lt;/p>
&lt;p>或者，您可以配置 Dapr 为您管理加密密钥，在 sidecar 中执行操作，同样不将原始密钥材料暴露给您的应用程序。&lt;/p>
&lt;h2 id="dapr-中的加密">Dapr 中的加密&lt;/h2>
&lt;p>使用 Dapr，您可以在不将加密密钥暴露给应用程序的情况下执行加密操作。&lt;/p>
&lt;img src="https://v1-18.docs.dapr.io/images/cryptography-overview.png" width=1000 style="padding-bottom:15px;" alt="显示 Dapr 加密如何与您的应用程序协作的图示">
&lt;p>通过使用加密构建块，您可以：&lt;/p>
&lt;ul>
&lt;li>更轻松地以安全的方式执行加密操作。Dapr 提供了防止使用不安全算法或不安全选项的保护措施。&lt;/li>
&lt;li>将密钥保存在应用程序之外。应用程序从未看到“原始密钥材料”，但可以请求库使用密钥执行操作。当使用 Dapr 的加密引擎时，操作在 Dapr sidecar 中安全地执行。&lt;/li>
&lt;li>实现更好的关注点分离。通过使用外部库或加密组件，只有授权团队可以访问私钥材料。&lt;/li>
&lt;li>更轻松地管理和轮换密钥。密钥在库中管理并在应用程序之外，它们可以在不需要开发人员参与（甚至不需要重启应用程序）的情况下轮换。&lt;/li>
&lt;li>启用更好的审计日志记录，以监控何时在库中使用密钥执行操作。&lt;/li>
&lt;/ul>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">注意&lt;/h4>

 虽然在 alpha 版本中同时支持 HTTP 和 gRPC，但使用支持的 Dapr SDK 的 gRPC API 是加密的推荐方法。

&lt;/div>

&lt;h2 id="功能">功能&lt;/h2>
&lt;h3 id="加密组件">加密组件&lt;/h3>
&lt;p>Dapr 加密构建块包括两种组件：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>允许与管理服务或库（“密钥库”）交互的组件。&lt;/strong>&lt;br>
类似于 Dapr 在各种 secret 存储或 state 存储之上的“抽象层”，这些组件允许与各种密钥库（如 Azure Key Vault）交互（未来 Dapr 版本中会有更多）。通过这些组件，对私钥的加密操作在库中执行，Dapr 从未看到您的私钥。&lt;/p></description></item><item><title>如何：使用加密API</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/cryptography/howto-cryptography/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/cryptography/howto-cryptography/</guid><description>&lt;p>在您了解了&lt;a href="https://v1-18.docs.dapr.io/zh-hans/developing-applications/building-blocks/cryptography/cryptography-overview/">Dapr作为加密构建块&lt;/a>之后，让我们通过使用SDK来学习如何使用加密API。&lt;/p>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">注意&lt;/h4>

 Dapr加密功能目前处于alpha测试阶段。

&lt;/div>

&lt;h2 id="加密">加密&lt;/h2>










&lt;ul class="nav nav-tabs" id="tabs-2" role="tablist">
 &lt;li class="nav-item">
 &lt;button class="nav-link active"
 id="tabs-02-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-00" role="tab"
 data-td-tp-persist="python" aria-controls="tabs-02-00" aria-selected="true">
 Python
 &lt;/button>
 &lt;/li>&lt;li class="nav-item">
 &lt;button class="nav-link"
 id="tabs-02-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-01" role="tab"
 data-td-tp-persist="javascript" aria-controls="tabs-02-01" aria-selected="false">
 JavaScript
 &lt;/button>
 &lt;/li>&lt;li class="nav-item">
 &lt;button class="nav-link"
 id="tabs-02-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-02" role="tab"
 data-td-tp-persist=".net" aria-controls="tabs-02-02" aria-selected="false">
 .NET
 &lt;/button>
 &lt;/li>&lt;li class="nav-item">
 &lt;button class="nav-link"
 id="tabs-02-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-03" role="tab"
 data-td-tp-persist="go" aria-controls="tabs-02-03" aria-selected="false">
 Go
 &lt;/button>
 &lt;/li>
&lt;/ul>

&lt;div class="tab-content" id="tabs-2-content">
 &lt;div class="tab-body tab-pane fade show active"
 id="tabs-02-00" role="tabpanel" aria-labelled-by="tabs-02-00-tab" tabindex="2">
 &lt;!--Python-->
&lt;p>在您的项目中使用Dapr SDK和gRPC API，您可以加密数据流，例如文件或字符串：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># 当传递数据（缓冲区或字符串）时，`encrypt`会返回一个包含加密信息的缓冲区&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">def&lt;/span> &lt;span style="color:#000">encrypt_decrypt_string&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">dapr&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">DaprClient&lt;/span>&lt;span style="color:#000;font-weight:bold">):&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">message&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;The secret is &amp;#34;passw0rd&amp;#34;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic"># 加密消息&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">resp&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">dapr&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">encrypt&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">data&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">message&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">encode&lt;/span>&lt;span style="color:#000;font-weight:bold">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">options&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">EncryptOptions&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic"># 加密组件的名称（必需）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">component_name&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">CRYPTO_COMPONENT_NAME&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic"># 存储在加密组件中的密钥（必需）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">key_name&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">RSA_KEY_NAME&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic"># 用于包装密钥的算法，必须由上述密钥支持。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic"># 选项包括：&amp;#34;RSA&amp;#34;, &amp;#34;AES&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">key_wrap_algorithm&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;RSA&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic"># 该方法返回一个可读流，我们将其完整读取到内存中&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">encrypt_bytes&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">resp&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">read&lt;/span>&lt;span style="color:#000;font-weight:bold">()&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">print&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">f&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;加密后的消息长度为 &lt;/span>&lt;span style="color:#4e9a06">{&lt;/span>&lt;span style="color:#204a87">len&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">encrypt_bytes&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06"> 字节&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
 &lt;div class="tab-body tab-pane fade"
 id="tabs-02-01" role="tabpanel" aria-labelled-by="tabs-02-01-tab" tabindex="2">
 &lt;!--JavaScript-->
&lt;p>在您的项目中使用Dapr SDK和gRPC API，您可以加密缓冲区或字符串中的数据：&lt;/p></description></item></channel></rss>