<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Olamiji Gabriel</title>
    <description>The latest articles on DEV Community by Olamiji Gabriel (@bennybriel).</description>
    <link>https://dev.to/bennybriel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4163411%2F5c36cc3f-b48b-4c84-a4b7-7b76cbc8a255.jpg</url>
      <title>DEV Community: Olamiji Gabriel</title>
      <link>https://dev.to/bennybriel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bennybriel"/>
    <language>en</language>
    <item>
      <title>I built a crypto-agility scanner, then found a detection gap in it worth sharing</title>
      <dc:creator>Olamiji Gabriel</dc:creator>
      <pubDate>Wed, 07 Oct 2026 08:07:06 +0000</pubDate>
      <link>https://dev.to/bennybriel/i-built-a-crypto-agility-scanner-then-found-a-detection-gap-in-it-worth-sharing-49kp</link>
      <guid>https://dev.to/bennybriel/i-built-a-crypto-agility-scanner-then-found-a-detection-gap-in-it-worth-sharing-49kp</guid>
      <description>&lt;p&gt;Most crypto-inventory tools assume one clean, modern codebase. African fintech infrastructure rarely looks like that — a COBOL or legacy Java core, a modern API middleware layer bolted on top, a PHP admin portal, a mobile client, often four different teams with four different crypto postures. CryptoRadar scans all of it together.&lt;br&gt;
The approach: deliberately regex-based rather than full AST parsing. A scanner that works today across Java, Kotlin, COBOL, JS/TS, Python, PHP, Go, C#, and config files beats a perfect-but-single-language one for a first-pass inventory — especially when a COBOL core is in scope and no mainstream AST tooling covers it well.&lt;br&gt;
The bug worth sharing: Java names signature algorithms as one concatenated token — SHA256withRSA, SHA1withECDSA — with no separator between the hash and the algorithm. Standard word-boundary regex matching cannot match inside that token from either side. I verified this empirically against six real compound-algorithm strings before trusting the fix: all six produced zero findings under the old pattern set. This is arguably the single most common way Java names a signing algorithm, so it was a real coverage gap, not an edge case. Fixed with a dedicated compound-token signature rather than patching the existing patterns with lookbehind hacks.&lt;br&gt;
The other fix: comment-masking. A // comment describing legacy crypto fired the same finding as the real code beneath it — in one case, a file with no actual legacy crypto at all produced a pure false positive sourced entirely from a comment. Built a single-pass, offset-preserving masker that strips comment content but leaves string literals untouched, so a hardcoded secret inside a quoted string is still caught.&lt;br&gt;
Real results: ran the updated scanner against a production-shaped fintech codebase (11 microservices, 676 files). Before: grade F, 26.4%, 10 Critical findings (a hardcoded secret shared across ten services). After rotating that secret and re-scanning: grade D, 31.4%, zero Critical findings — confirmed as genuine remediation, not a scanner artifact, by independently checking the updated scanner still detects the original secret pattern when present.&lt;br&gt;
Try it:&lt;br&gt;
&lt;code&gt;pip install "git+https://github.com/bennybriel/cryptoradar.git@v0.2.0"&lt;/code&gt;&lt;br&gt;
&lt;code&gt;cryptoradar scan-multi "legacy-core:demo_repo/legacy-core-java" "api-layer:demo_repo/api-layer-node" "mobile-adapter:demo_repo/mobile-adapter-python" "pqc-pilot:demo_repo/pqc-pilot-service" -o demo_report.html&lt;/code&gt;&lt;br&gt;
MIT licensed. Feedback on the detection approach, and any false positives or false negatives you find, genuinely welcome — link to the repo below.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>java</category>
      <category>security</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
