X.690 – один из стандартов ASN.1, разработанных совместно организациями ISO, IEC и ITU-T для удобства представления данных при их передаче в телекоммуникационных сетях. Правила кодирования, описанные в X.690, служат для представления структур данных, описанных по правилам ASN.1, в виде последовательностей байт. Такие последовательности удобнее передавать по линиям связи или сохранять в файлы, чем делать те же операции с самими структурами.
 Стандарт X.690 описывает следующие правила кодирования структур данных, созданных в соответствии с ASN.1:
 В 1984 году организация ITU-T создала серию стандартов X.400, в числе которых был и стандарт X.409, который, ввиду активного использования, в 1988 году ITU-T совместно с ISO и IEC выделили в два отдельных стандарта: X.208, описывающий ASN.1, и X.209, в котором описывались правила BER. В 1994 году ASN.1 был переработан и серия стандартов X.208 перешла в серию X.680, а стандарту X.209 на смену пришёл стандарт X.690.
 Базовые правила кодирования или BER – набор правил, объясняющий, как представить любую структуру данных, описанную согласно ASN.1, в виде последовательности восьмибитных октетов.
 Для того, чтобы различные типы данных можно было описывать схожим образом, в X.690 была определена общая структура блока закодированной информации, состоящая из следующих 3 частей:
 Формат идентификатора строго фиксирован.
 Биты 8 и 7 определяют класс данных
 Бит 6 определяет, являются ли данные простыми (как-то INTEGER) или могут содержать в себе другие различные наборы данных (как-то SET). При этом при кодировании в первом случае говорят о примитивном кодировании, а во втором - о конструктивном;
 Биты 5 - 1 определяют тег данных.
 В случае, если класс данных не определен в ASN.1, то тег может быть больше 30. В таком случае используют несколько октетов для представления идентификатора. При этом биты 5-1 первого октета имеют значение 111112, а следующие октеты кодируются следующим образом:
 В случае, если длина блока закодированных данных заранее известна, октеты длины кодируются следующим образом:
 Если эта длина не превышает 127 октетов (байт), то она просто записывается в соответствующий октет длины. Такая форма представления октетов длины называется короткой (short form).
 Если длина блока закодированных данных больше 127 байт, то:
 Такая форма представления октетов длины называется длинной (long form)
 Если же длина блока закодированных данных на момент кодирования длины неизвестна, то в октет длины записывается значение 0х80, что указывает на кодирование с неопределенной длиной (indefinite form). В этом случае в конце блока закодированных данных должны стоять октеты 00 00, явно указывающие на его завершение. Кодирование с неопределённой длиной разрешено только для конструктивных типов данных; два нулевых октета в конце соответствуют ASN.1-типу данных с тегом 0 (End-of-contents) и длиной 0.
 Кодирование различных типов данных детально описано в тексте стандарта (англ.).
 В зависимости от структуры и преследуемых при кодировании целей кодирование одних и тех же данных может существенно различаться.
 Так, BER-кодирование значения TRUE типа BOOLEAN может иметь как вид:
 так и вид:
 Результат кодирования типа SET может быть различным в зависимости от того, в каком порядке мы кодируем "вложенные" типы данных:
 если
 то для
 результат кодирования по правилам BER может быть таким:
 и таким:
 В зависимости от того, примитивное или конструктивное кодирование используется, его результат может также различаться. Так, для значения "Test User 1" типа STRING при примитивном кодировании результат будет иметь вид:
 при конструктивном:
 Для однозначного кодирования данных используются правила кодирования DER и CER.
 Особые правила кодирования или DER совпадают с BER с учётом выполнения следующих ограничений:
 Канонические правила кодирования или CER совпадают с BER с учётом выполнения следующих ограничений:
 BER предлагает пользователю различные пути для кодирования одних и тех же данных, причём предполагается, что система, которая поддерживает стандарты ASN.1, может корректно их декодировать вне зависимости от представления, в то время как DER и CER поддерживают только конкретный вариант кодирования для каждого типа. Это различие проявляется в быстродействии кодирования данных: согласно исследованиям, если при кодировании используется строго определенный формат данных, то системе требуется для этого намного меньше операций. Проще говоря, DER и CER обеспечивают много большее быстродействие, чем BER.
 Основное же отличие DER от CER заключается в том, что в DER используется кодирование данных с известной длиной, а в CER в некоторых случаях (например, при кодировании данных типа STRING длиной более 1000 символов) используется кодирование с не известной заранее длиной. Это отличие выражается в количестве блоков, необходимых для кодирования длины зашифрованных данных. Так, для определения длины блока закодированных данных при кодировании с неизвестной длиной требуется всего 3 октета, в то время как для больших сообщений при DER кодировании их количество может достигать 32 октетов. То есть целесообразно использовать DER при кодировании небольших по размеру данных, а CER - для больших.
 Переход от стандартов X.208 и X.209 к X.680 - X.683 и X.690 был обусловлен необходимостью исправления ошибок, выявленных в процессе использования протоколов, работающих с ASN.1. В связи с этим при переходе от одних стандартов к другим была обеспечена их полная совместимость. В частности, при получении одним пользователем от другого структуры, закодированной по правилам BER, зачастую невозможно с определенностью сказать, какой из стандартов тот использовал при кодировании.
 BER, DER и CER активно применяют в различных протоколах передачи данных и в криптографических протоколах, как-то:
 Несмотря на простоту в кодировании данных, многие считают BER, DER и CER неэффективными по сравнению с другими правилами кодирования, так как, во-первых, размер результата кодирования данных при помощи BER зачастую получается больше, чем при использовании его альтернатив, а во-вторых, само кодирование занимает несколько больше времени.
 Такими схемами кодирования данных, разработанными для улучшения BER, являются Packed Encoding Rules (PER), XML Encoding Rules (XER) и ASN.1 SOAP, описанные соответственно в ITU-T X.691, X.693 и в X.892.
 ASN.1